Nightwatch 可以配置为在远程 Selenium 网格或云提供商(如 BrowserStack 和 Sauce Labs)上运行。

在 BrowserStack 上运行

如果您使用 CLI 工具安装 Nightwatch 并选择在 BrowserStack 远程机器上运行,它将在 nightwatch.conf.jstest_settings 属性下自动生成 BrowserStack 设置块。

如果您尝试在 BrowserStack 上为现有项目运行 Nightwatch,您需要在 nightwatch.conf.js 文件中添加一个 browserstack 块作为 test_settings 的子属性。

nightwatch.conf.js
module.exports = {
    ...,
    test_settings: {
        ...,
        browserstack: {
            selenium: {
                host: 'hub.browserstack.com',
                port: 443
            },
            // More info on configuring capabilities can be found on:
            // https://www.browserstack.com/automate/capabilities?tag=selenium-4
            desiredCapabilities: {
                'bstack:options': {
                    userName: '${BROWSERSTACK_USERNAME}',
                    accessKey: '${BROWSERSTACK_ACCESS_KEY}'
                }
            },
            
disable_error_log: true, webdriver: { timeout_options: { timeout: 15000, retry_attempts: 3 }, keep_alive: true, start_process: false } },
'browserstack.local': { extends: 'browserstack', desiredCapabilities: { 'browserstack.local': true } },
'browserstack.firefox': { extends: 'browserstack', desiredCapabilities: { browserName: 'firefox' } },
'browserstack.local_firefox': { extends: 'browserstack.local', desiredCapabilities: { browserName: 'firefox' } }, ... } }

一旦 BrowserStack 块出现在 Nightwatch 配置文件中,请将 BrowserStack 用户名和访问密钥替换为您的凭据,您就可以在 BrowserStack 基础设施上运行测试了。

在 LambdaTest 上运行

如果您尝试在 LambdaTest 上为现有项目运行 Nightwatch,您需要在 nightwatch.conf.js 文件中添加一个 lambdatest 块作为 test_settings 的子属性。

nightwatch.conf.js
module.exports = {
    ...,
    test_settings: {
        ...,
        lambdatest: {
            selenium: {
                host: 'hub.lambdatest.com',
                port: 443
            },
            'username': '${LAMBDATEST_USERNAME}',
            'access_key': '${LAMBDATEST_ACCESS_KEY}',
        },
        // More info on configuring capabilities can be found on:
        // https://www.lambdatest.com/capabilities-generator/
        'lambdatest.chrome': {
            extends: 'lambdatest',
            desiredCapabilities: {
                browserName: 'chrome',
                'LT:Options': {
                    'platformName': 'Windows 10',
                    'browserVersion': '108.0',
                    'project': 'Project',
                }
            }
        },
        
'lambdatest.firefox': { extends: 'lambdatest', desiredCapabilities: { browserName: 'firefox', 'LT:Options': { 'platformName': 'Windows 10', 'browserVersion': '108.0', 'project': 'Untitled', } } }, ... } }

在您在 nightwatch.conf.js 中添加 LambdaTest 配置后,请将 LambdaTest 用户名和访问密钥替换为您的凭据,您就可以在 LambdaTest 云网格上运行测试了。

您还可以使用 自动化功能生成器 配置和添加所需的功能。

在 Sauce Labs 上运行

如果您在通过 CLI 工具设置 Nightwatch 时选择 Sauce Labs 作为云提供商,测试设置将自动添加。

如果您尝试在 Sauce Labs 上为现有项目运行 Nightwatch,您需要在 nightwatch.conf.js 文件中添加以下块,如下所示。

nightwatch.conf.js
module.exports = {
    ...,
    test_settings: {
        ...,
        saucelabs: {
            selenium: {
                host: 'ondemand.saucelabs.com',
                port: 443
            },
            // More info on configuring capabilities can be found on:
            // https://wiki.saucelabs.com/display/DOCS/Test+Configuration+Options
            desiredCapabilities: {
                'sauce:options': {
                username: '${SAUCE_USERNAME}',
                accessKey: '${SAUCE_ACCESS_KEY}',
                screenResolution: '1280x1024'
                // https://docs.saucelabs.com/dev/cli/sauce-connect-proxy/#--region
                // region: 'us-west-1'
                // https://docs.saucelabs.com/dev/test-configuration-options/#tunnelidentifier
                // parentTunnel: '',
                // tunnelIdentifier: '',
                },
                javascriptEnabled: true,
                acceptSslCerts: true,
                // https://docs.saucelabs.com/dev/test-configuration-options/#timezone
                timeZone: 'London'
            },
            disable_error_log: false,
            webdriver: {
                start_process: false
            }
        },
        
'saucelabs.firefox': { extends: 'saucelabs', desiredCapabilities: { browserName: 'firefox', browserVersion: 'latest', platformName: 'Windows 10' } }, ... } }

一旦 Sauce Labs 块出现在 Nightwatch 配置文件中,请将 Sauce Labs 用户名和访问密钥替换为您的凭据。

在 TestingBot 上运行

您可以使用 TestingBot 在云中的浏览器上运行 Nightwatch 测试。您需要在 nightwatch.conf.js 文件中添加一个 testingbot 块作为 test_settings 的子属性。

nightwatch.conf.js
module.exports = {
    ...,
    test_settings: {
        ...,
        testingbot: {
            selenium: {
                host: 'hub.testingbot.com',
                port: 443
            },
            'username': '${TB_KEY}',
            'access_key': '${TB_SECRET}',
        },
        'testingbot.chrome': {
            extends: 'testingbot',
            desiredCapabilities: {
                browserName: 'chrome',
                'tb:options': {
                    'platformName': 'Windows 10',
                    'version': 'latest',
                    'name': 'First Nightwatch test',
                }
            }
        },
        
'testingbot.firefox': { extends: 'testingbot', desiredCapabilities: { browserName: 'firefox', 'tb:options': { 'platformName': 'Windows 10', 'version': 'latest', 'name': 'First Nightwatch test', } } }, ... } }

在您在 nightwatch.conf.js 中添加 TestingBot 配置后,请将 TestingBot 用户名和访问密钥替换为您的凭据,这些凭据可在 TestingBot 成员区域获得。

您可以使用其他 功能 来定制您在 TestingBot 上的测试。

在远程 Selenium 服务器上运行

如果您使用 create-nightwatch 工具安装 Nightwatch 并选择在远程 selenium 服务器或其他云提供商上运行,远程主机设置将自动添加到 test_settings 中,并带有占位符值。

如果您尝试为现有项目设置此项,您需要在 nightwatch.conf.js 文件中添加以下块,位于 test_settings 属性下,如下所示。

nightwatch.conf.js
module.exports = {
    ...,
    test_settings : {
        ...,
        remote: {
            // Info on all the available options with "selenium":
            // /guide/configuration/settings.html#selenium-server-settings
            selenium: {
                start_process: false,
                server_path: '',
                host: '<remote-hostname>',
                port: 4444
            },
            
username: '${REMOTE_USERNAME}', access_key: '${REMOTE_ACCESS_KEY}',
webdriver: { keep_alive: true, start_process: false } },
'remote.firefox': { extends: 'remote', desiredCapabilities: { browserName: 'firefox', 'moz:firefoxOptions': { args: [ // '-headless', // '-verbose' ] } } }, ... } }

添加配置块后,请将远程主机、端口和凭据替换为您的,然后开始吧!

如果您需要更多帮助,可以加入我们的 Discord 服务器