在 SauceLabs 上进行量角器测试 运行

Getting Protractor Tests to Run on SauceLabs

我正在尝试使用量角器去 SauceLabs 启动一些测试。 我已启动 SauceConnect 并 运行ning。我相信我的 protractor.config.js 设置正确,但是当我 运行 在我的机器上使用 ng e2e --suite smoke 进行测试时,它只是在我的本地机器上 运行ning 而不是通过隧道。有什么建议么?我一直在关注这个“tutorial”并且进展顺利,但我只是没有看到任何东西通过隧道。

这是我的 protractor.config.js 文件:

const baseUrl = '<BASEURL>';
const maxNumberOfInstances = process.env.NUMBER_OF_INSTANCES ? process.env.NUMBER_OF_INSTANCES : 1;
const reportPath = 'protractor/report';
const HtmlScreenshotReporter = require('protractor-jasmine2-screenshot-reporter');
const screenShotReporter = new HtmlScreenshotReporter({
    dest: reportPath,
    filename: 'artemis-e2e-report.html'
});
const SAUCELABS_USERNAME = '<SAUCEUSERNAME';
const SAUCELABS_AUTHKEY = '<SAUCEKEY>';

const chromeArgs = process.env.IS_LOCAL ? ['--no-sandbox', '--test-type=browser', '--lang=en', '--window-size=1680,1050'] : ['--disable-gpu', '--no-sandbox', '--test-type=browser', '--lang=en', '--window-size=1680,1050'];
const browserCapabilities = [{
    sauceUser: SAUCELABS_USERNAME,
    sauceKey: SAUCELABS_AUTHKEY,
    browserName: 'chrome',
    tunnelIdentifier: '<SAUCETUNNEL>',
    shardTestFiles: true,
    maxInstances: maxNumberOfInstances,
    platform: 'Windows 10',
    version: '73.0',
    screenResolution: '1280x1024',
    chromeOptions: {
        args: chromeArgs,
        prefs: {
            'credentials_enable_service': false,
            'profile': {
                'password_manager_enabled': false
            },
            download: {
                prompt_for_download: false,
                directory_upgrade: true,
                default_directory: 'C:\downloads\'
            },
        },
    },
    loggingPrefs: {
        browser: 'SEVERE'
    },
}, ];

// Protractor config
exports.config = {
    baseUrl: baseUrl,

    directConnect: true,
    allScriptsTimeout: 2 * 60 * 1000,
    jasmineNodeOpts: {
        defaultTimeoutInterval: 3 * 60 * 1000
    },
    getPageTimeout: 2 * 60 * 1000,
    suites: {
        smoke: 'protractor/smokeTests/*.scenario.ts',
    },

    multiCapabilities: browserCapabilities,

    framework: 'jasmine2',
    onPrepare: function () {
        browser.waitForAngularEnabled(true);
        require('ts-node').register({
            project: 'protractor/tsconfig.json',
        });
        const jasmineReporters = require('jasmine-reporters');
        const jUnitXMLReporter = new jasmineReporters.JUnitXmlReporter({
            consolidateAll: false,
            savePath: reportPath,
            filePrefix: 'xmloutput'
        });

        const JasmineConsoleReporter = require('jasmine-console-reporter');
        const consoleReporter = new JasmineConsoleReporter({
            colors: 1,
            cleanStack: 1,
            verbosity: 4,
            listStyle: 'indent',
            activity: true,
            emoji: true,
            beep: true,
            timeThreshold: {
                ok: 10000,
                warn: 15000,
                ouch: 30000,
            }
        });

        jasmine.getEnv().addReporter(jUnitXMLReporter);
        jasmine.getEnv().addReporter(screenShotReporter);
        jasmine.getEnv().addReporter(consoleReporter);

        browser.get(browser.baseUrl);
    },

    beforeLaunch: function () {
        return new Promise(function (resolve) {
            screenShotReporter.beforeLaunch(resolve);
        });
    },

    afterLaunch: function (exitCode) {
        return new Promise(function (resolve) {
            screenShotReporter.afterLaunch(resolve.bind(this, exitCode));
        });
    },
};

您从哪里获取 tunnelIdentifier?

您想确定:

  1. 隧道是运行
  2. 您可以从您正在测试的地方访问隧道
  3. 如果您有命名隧道(例如 sc -i myTunnel),则 "myTunnel" 应该是隧道标识符,而不是控制台输出中显示的隧道 ID(即不是 Tunnel ID: cdceac0e33db4d5fa44093e191dfdfb0
  4. 如果您有一个未命名的隧道,那么您不需要为它指定一个隧道标识符。
  5. 如果您似乎正在使用隧道但无法访问您的本地环境,请尝试在 Sauce Labs 中进行手动测试会话并 select 隧道以查看它是否在那里工作。

首先你提到这个

it is just running on my local machine and not going through the tunnel. Any suggestions

这与隧道无关,但与:

有关
  1. 您还有 directConnect: true,,请将其从您的配置中删除
  2. 您已将 Sauce Labs 凭据添加到您的功能中,但您应该在根级别的配置文件中使用它们。这是和 example(它是为 TypeScript 编写的,但它应该让您了解如何设置配置文件)。隧道标识符是正确的,您只需要确保获得正确的隧道 ID,正如@fijiaaron 提到的那样

希望对您有所帮助