Jasmine 自定义报告未加载 VSTS 中 Sauce labs 选项卡下的所有测试

Jasmine custom report is not loading all the tests under Sauce labs tab in VSTS

在 CI 启用的框架中使用 VSTS 中的 Protractor 和 jasmine 自动化了 e2e 测试。使用 jasmine 自定义报告程序在 VSTS 构建定义中的 sauce labs 选项卡下加载 e2e 测试结果。但是,它没有加载所有测试。它仅显示构建中的最后一个 e2e 测试 运行。正在为所有 e2e 测试打印控制台日志。请看下面的代码。

let sauceLabsReporter: jasmine.CustomReporter = {
specDone: (result: jasmine.CustomReporterResult): void => {
    Util.log('*** sauceLabsReporter: result.fullName:', result.fullName);
    Util.log('*** sauceLabsReporter: result.status:', result.status);
    Util.log('*** sauceLabsReporter: result.testCaseId:', result.testCaseId);

    if (result.testCaseId) {
        result.fullName = `(Testcase ID: ${result.testCaseId}): ${result.fullName}`;
        Util.log('*** sauceLabsReporter: UPDATED result.fullName:', result.fullName);
    }

    Util.updateSauceLabsJobTitle(result.fullName);

    if (result.status) {
        Util.updateSauceLabsTestState(result.status);
    }
}
};

export function updateSauceLabsJobTitle(title: string): promise.Promise<void> {
let fullTitle: string = `${title} | (${getHostname()})`;

return browser.executeScript(`sauce:job-name=${fullTitle}`)
    .then(() => browser.getSession())
    .then((session: Session) => {
        if (isThisVSTSBuildAgent()) {
            //The VSTS Sauce Labs add-on gets information by parsing the console log.
            //tslint:disable-next-line:no-console
            console.log(`SauceOnDemandSessionID=${session.getId()} job-name=${fullTitle}`);
        }
    });
 }

export function updateSauceLabsTestState(state: string): promise.Promise<{}> {

  return browser.executeScript(`sauce:job-result=${state}`);
 }

我和 Padma 从事同一个项目。它与 restartBrowserBetweenTests 设置为 false 有关,这将所有测试合并为一个作业。设置为true后,每个测试都变成了自己的工作。