在 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?
您想确定:
- 隧道是运行
- 您可以从您正在测试的地方访问隧道
- 如果您有命名隧道(例如
sc -i myTunnel
),则 "myTunnel" 应该是隧道标识符,而不是控制台输出中显示的隧道 ID(即不是 Tunnel ID: cdceac0e33db4d5fa44093e191dfdfb0
)
- 如果您有一个未命名的隧道,那么您不需要为它指定一个隧道标识符。
- 如果您似乎正在使用隧道但无法访问您的本地环境,请尝试在 Sauce Labs 中进行手动测试会话并 select 隧道以查看它是否在那里工作。
首先你提到这个
it is just running on my local machine and not going through the tunnel. Any suggestions
这与隧道无关,但与:
有关
- 您还有
directConnect: true,
,请将其从您的配置中删除
- 您已将 Sauce Labs 凭据添加到您的功能中,但您应该在根级别的配置文件中使用它们。这是和 example(它是为 TypeScript 编写的,但它应该让您了解如何设置配置文件)。隧道标识符是正确的,您只需要确保获得正确的隧道 ID,正如@fijiaaron 提到的那样
希望对您有所帮助
我正在尝试使用量角器去 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?
您想确定:
- 隧道是运行
- 您可以从您正在测试的地方访问隧道
- 如果您有命名隧道(例如
sc -i myTunnel
),则 "myTunnel" 应该是隧道标识符,而不是控制台输出中显示的隧道 ID(即不是Tunnel ID: cdceac0e33db4d5fa44093e191dfdfb0
) - 如果您有一个未命名的隧道,那么您不需要为它指定一个隧道标识符。
- 如果您似乎正在使用隧道但无法访问您的本地环境,请尝试在 Sauce Labs 中进行手动测试会话并 select 隧道以查看它是否在那里工作。
首先你提到这个
it is just running on my local machine and not going through the tunnel. Any suggestions
这与隧道无关,但与:
有关- 您还有
directConnect: true,
,请将其从您的配置中删除 - 您已将 Sauce Labs 凭据添加到您的功能中,但您应该在根级别的配置文件中使用它们。这是和 example(它是为 TypeScript 编写的,但它应该让您了解如何设置配置文件)。隧道标识符是正确的,您只需要确保获得正确的隧道 ID,正如@fijiaaron 提到的那样
希望对您有所帮助