我如何 运行 针对 safari 进行守夜人测试?

How do I run nightwatch tests against safari?

我找不到不包含整个 Selenium jar 的任何有效的 safari nightwatch 配置。守夜人文档说:

Using Selenium Standalone Server used to be the de-factor standard for managing the various browser drivers and services, but starting with Nightwatch 1.0 is no longer required, nor is it recommended, unless you are testing against legacy browsers, such as Internet Explorer.

safari 算作旧版浏览器吗?有没有人有可以 运行 针对 safari 进行测试的工作 nightwatch 1.x 配置文件的示例?

MacOS:High Sierra 10.13.6

野生动物园:12.0.2

守夜人:v1.0.18

我当前的 nightwatch.json 适用于 Chrome 但不适用于 safari:

{
  "src_folders": [
    "__tests__/e2e/tests"
  ],
  "output_folder": "__tests__/e2e/reports",
  "custom_commands_path": "",
  "custom_assertions_path": "",
  "page_objects_path": "",
  "globals_path": "",
  "webdriver": {
    "start_process": true
  },
  "test_settings": {
    "default": {
      "desiredCapabilities": {
        "browserName": "chrome",
        "javascriptEnabled": true,
        "acceptSslCerts": true,
        "chromeOptions": {
          "args": [
            "--window-size=1440,900"
          ]
        }
      }
    },
    "devChrome": {
      "launch_url": "https://DEV_HOST",
      "globals": {
        "env": "dev"
      },
      "webdriver": {
        "server_path": "node_modules/chromedriver/lib/chromedriver/chromedriver.exe",
        "port": 9515
      }
    },
    "devSafari": {
      "launch_url": "https://DEV_HOST",
      "globals": {
        "env": "dev"
      },
      "webdriver": {
        "server_path": "/usr/bin/safaridriver",
        "port": 9515
      }
    }
  }
}

我在 运行 devSafari 配置时遇到的当前错误: 无法启动服务器:必须至少指定一个配置参数。

在 GitHub (https://github.com/nightwatchjs/nightwatch-docs/issues/94) 上得到了 nightwatch 团队的一些帮助,我现在有一个适用于 Nightwatch 1.x 和 Safari 10+ 的工作示例配置文件。注意:"working" 我的意思是浏览器打开并且我可以看到 Nightwatch 与其交互。这些测试实际上并没有像他们在 Chrome 中那样通过,但这很可能只是由于浏览器的细微差异,这些差异可以在测试用例中自行解决。

{
  "src_folders": [
     "__tests__/e2e/tests"
   ],
   "output_folder": "__tests__/e2e/reports",
   "custom_commands_path": "",
   "custom_assertions_path": "",
   "page_objects_path": "",
   "globals_path": "",

   "webdriver": {
     "start_process": true,
     "server_path": "/usr/bin/safaridriver",
     "port": 4445
   },

   "test_settings": {
     "default": {
       "desiredCapabilities": {
         "browserName": "safari",
         "javascriptEnabled": true,
         "acceptSslCerts": true
       }
     },
     "safari": {
       "launch_url": "localhost",
       "desiredCapabilities": {
         "browserName":"safari"
       },
       "globals": {
         "env": "dev"
       }
     }
   }
}
  1. 运行: /usr/bin/safaridriver --enable
  2. 打开 Safari 并勾选开发 > 允许远程自动化,然后关闭 Safari。
  3. 运行守夜人

使用 Safari 10+,您只需使用 safari 作为 browserName。然后确保在 运行 测试时指定正确的环境。对于我的配置,这意味着传递选项 --env safari。这是我的 nightwatch.conf.js:

module.exports = {
  src_folders: ['tests/e2e/specs'],
  output_folder: 'tests/e2e/reports',
  selenium: {
    start_process: true,
    server_path: require('selenium-server').path,
    host: '127.0.0.1',
    port: 4444,
    cli_args: {
      'WebDriver.chrome.driver': require('chromedriver').path,
    },
  },
  test_settings: {
    chrome: {
      desiredCapabilities: {
        browserName: 'chrome',
      },
    },
    safari: {
      desiredCapabilities: {
        browserName: 'safari',
        javascriptEnabled: true,
        acceptSslCerts: true,
      },
    },
  },
}