webdriverio / webdriverio/visual-testing

Visual service and appium-windows-driver are not working together for iOS

Open
#232 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug help wanted
Dominant language
TypeScript
Stars
153
Forks
59
PR merge metrics
No merged PRs in 30d

Description

Environment (please complete the following information):

  • Node.js version: v18.16.0
  • NPM version: 9.5.1
  • Browser name and version: we use winAppDriver
  • Platform name and version: Windows 10
  • WebdriverIO version: [e.g. 5.1.0]
  • @wdio/visual-service version: [e.g. 1.0.0]
    "devDependencies": {
    "@types/jasmine": "^3.4.1",
    "@types/node": "^12.20.55",
    "@wdio/appium-service": "^5.12.1",
    "@wdio/cli": "^5.10.1",
    "@wdio/dot-reporter": "5.13.2",
    "@wdio/jasmine-framework": "^5.12.1",
    "@wdio/junit-reporter": "^5.12.1",
    "@wdio/local-runner": "^5.10.1",
    "@wdio/visual-service": "^3.0.2",
    "appium": "1.15.0",
    "canvas": "^2.11.2",
    "prettier": "^1.18.2",
    "rimraf": "3.0.0",
    "ts-node": "^8.4.1",
    "tsconfig-paths": "^3.8.0",

Config of WebdriverIO + @wdio/visual-service
An example of how you configured the @wdio/visual-service

const { join } = require('path');

exports.config = {
// ...
// =====
// Setup
// =====
services: [
['visual', {
// Some options, see the docs for more
baselineFolder: join(process.cwd(), 'tests', 'baseline'),
formatImageName: '{tag}-{logName}-{width}x{height}',
screenshotPath: join(process.cwd(), 'tmp'),
savePerInstance: true,
autoSaveBaseline: true,
blockOutStatusBar: true,
blockOutToolBar: true,
// NOTE: When you are testing a hybrid app please use this setting
isHybridApp: false,
// Options for the tabbing image
tabbableOptions: {
circle: {
size: 18,
fontSize: 18,
// ...
},
line: {
color: "#ff221a", // hex-code or for example words like red|black|green
width: 3,
},
},
// ... more options
}]
],

Describe the bug
An error is thrown when running the tests

To Reproduce
Steps to reproduce the behavior:

[Include code or an example repository that can easily be set up]

Expected behavior
A clear and concise description of what you expected to happen.

Log

2024-02-19T16:39:10.502Z ERROR @wdio/config:ConfigParser: Failed loading configuration file: C:\Users\dubli\OneDrive\Des
ktop\1\JavaScript\packages\webdriverio\wdio.conf.winappdriver.js: require() of ES Module C:\Users\dubli\OneDrive\Desktop
\1\JavaScript\packages\webdriverio\wdio.conf.winappdriver.js from C:\Users\dubli\OneDrive\Desktop\1\JavaScript\node_modu
les@wdio\config\build\lib\ConfigParser.js not supported.
wdio.conf.winappdriver.js is treated as an ES module file as it is a .js file whose nearest parent package.json contains
"type": "module" which declares all .js files in that package scope as ES modules.
Instead rename wdio.conf.winappdriver.js to end in .cjs, change the requiring code to use dynamic import() which is avai
lable in all CommonJS modules, or change "type": "module" to "type": "commonjs" in C:\Users\dubli\OneDrive\Desktop\1\Jav
aScript\packages\webdriverio\package.json to treat all .js files as CommonJS (using .mjs for all ES modules instead).

C:\Users\dubli\OneDrive\Desktop\1\JavaScript\node_modules@wdio\config\build\lib\ConfigParser.js:43
var fileConfig = (0, _deepmerge.default)(require(filePath).config, {}, MERGE_OPTIONS);
^

Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\dubli\OneDrive\Desktop\1\JavaScript\packages\webdriverio\wdio.c
onf.winappdriver.js from C:\Users\dubli\OneDrive\Desktop\1\JavaScript\node_modules@wdio\config\build\lib\ConfigParser.j
s not supported.
wdio.conf.winappdriver.js is treated as an ES module file as it is a .js file whose nearest parent package.json contains
"type": "module" which declares all .js files in that package scope as ES modules.
Instead rename wdio.conf.winappdriver.js to end in .cjs, change the requiring code to use dynamic import() which is avai
lable in all CommonJS modules, or change "type": "module" to "type": "commonjs" in C:\Users\dubli\OneDrive\Desktop\1\Jav
aScript\packages\webdriverio\package.json to treat all .js files as CommonJS (using .mjs for all ES modules instead).

at ConfigParser.addConfigFile (C:\Users\dubli\OneDrive\Desktop\1\JavaScript\node_modules\@wdio\config\build\lib\Conf

igParser.js:43:48)
at new Launcher (C:\Users\dubli\OneDrive\Desktop\1\JavaScript\node_modules@wdio\cli\build\launcher.js:33:23)
at launch (C:\Users\dubli\OneDrive\Desktop\1\JavaScript\node_modules@wdio\cli\build\run.js:63:20)
at run (C:\Users\dubli\OneDrive\Desktop\1\JavaScript\node_modules@wdio\cli\build\run.js:45:12)
at Object.run (C:\Users\dubli\OneDrive\Desktop\1\JavaScript\node_modules@wdio\cli\build\index.js:36:20)
at Object. (C:\Users\dubli\OneDrive\Desktop\1\JavaScript\node_modules@wdio\cli\bin\wdio.js:11:21) {
code: 'ERR_REQUIRE_ESM'
}

Node.js v18.16.0
npm ERR! Lifecycle script test failed with error:

Additional context
Add any other context about the problem here.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The reproduction is linked from the issue, and the failing configuration is wdio.conf.winappdriver.js; start by running that example with the listed Node.js and package versions. Trace the failure through @wdio/config's ConfigParser.js and establish a reproducible expected behavior for Visual service with the Windows/Appium setup; the issue does not define a successful outcome.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, node.js
Domain
mobile-dev, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.