Closed sdoigmm closed 1 year ago
Thanks for raising an issue, can you share the logs in a gist by running npx wdio wdio.conf.js -- --logLevel=debug
. I only need to have the first few lines of the logs where the services are instantiated.
Secondly, can you also provide information like Node and npm version?
Thanks
I cloned our remote webdriver repo into a different local directory, so I had to run npm install
again. The error is no longer occurring. Looks like this answer had the same solution.
Cheers.
Hi @wswebcreation,
The same error is reoccurring. I have not changed anything in my environment or test setup.
You had an extra -- in the npx wdio wdio.conf.js -- --logLevel=debug
which had me stumped for while. Anyhow:
Node v18.13.0 npm v8.19.3
Execution of 1 workers started at 2023-02-01T08:37:46.663Z
2023-02-01T08:37:46.665Z DEBUG @wdio/utils:initialiseServices: initialise service "chromedriver" as NPM package
2023-02-01T08:37:46.752Z DEBUG @wdio/utils:initialiseServices: initialise service "image-comparison" as NPM package
2023-02-01T08:37:46.850Z INFO @wdio/cli:launcher: Run onPrepare hook
2023-02-01T08:37:46.854Z INFO chromedriver: Start Chromedriver (C:\Users\steve\OneDrive\Documents\Bit Bucket\mandoe-visual-testing-02\node_modules\chromedriver\lib\chromedriver\chromedriver.exe) with args --port=9515 --url-base=/
2023-02-01T08:37:49.417Z INFO chromedriver: Starting ChromeDriver 109.0.5414.74 (e7c5703604daa9cc128ccf5a5d3e993513758913-refs/branch-heads/5414@{#1172}) on port 9515
2023-02-01T08:37:49.418Z INFO chromedriver: Only local connections are allowed.
2023-02-01T08:37:49.419Z INFO chromedriver: Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
2023-02-01T08:37:49.453Z INFO chromedriver: ChromeDriver was started successfully.
2023-02-01T08:37:49.515Z DEBUG @wdio/cli:utils: Finished to run "onPrepare" hook in 2664ms
2023-02-01T08:37:49.573Z INFO @wdio/cli:launcher: Run onWorkerStart hook
2023-02-01T08:37:49.574Z DEBUG @wdio/cli:utils: Finished to run "onWorkerStart" hook in 0ms
2023-02-01T08:37:49.577Z INFO @wdio/local-runner: Start worker 0-0 with arg: wdio.conf.js,--logLevel=debug
[0-0] 2023-02-01T08:37:51.247Z INFO @wdio/local-runner: Run worker command: run
[0-0] 2023-02-01T08:37:51.253Z DEBUG @wdio/config:ConfigParser: No compiler found, continue without compiling files
[0-0] 2023-02-01T08:37:51.258Z DEBUG @wdio/local-runner:utils: init remote session
[0-0] 2023-02-01T08:37:51.266Z DEBUG @wdio/utils:initialiseServices: initialise service "chromedriver" as NPM package
[0-0] 2023-02-01T08:37:51.437Z DEBUG @wdio/utils:initialiseServices: initialise service "image-comparison" as NPM package
Tnx, can you share a bit more of the logs π
@wswebcreation is this enough:
Execution of 1 workers started at 2023-02-02T01:16:36.860Z
2023-02-02T01:16:36.862Z DEBUG @wdio/utils:initialiseServices: initialise service "chromedriver" as NPM package
2023-02-02T01:16:37.006Z DEBUG @wdio/utils:initialiseServices: initialise service "image-comparison" as NPM package
2023-02-02T01:16:37.183Z INFO @wdio/cli:launcher: Run onPrepare hook
2023-02-02T01:16:37.187Z INFO chromedriver: Start Chromedriver (C:\Users\steve\OneDrive\Documents\Bit Bucket\mandoe-visual-testing-02\node_modules\chromedriver\lib\chromedriver\chromedriver.exe) with args --port=9515 --url-base=/
2023-02-02T01:16:38.297Z INFO chromedriver: Starting ChromeDriver 109.0.5414.74 (e7c5703604daa9cc128ccf5a5d3e993513758913-refs/branch-heads/5414@{#1172}) on port 9515
2023-02-02T01:16:38.298Z INFO chromedriver: Only local connections are allowed.
2023-02-02T01:16:38.298Z INFO chromedriver: Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
2023-02-02T01:16:38.337Z INFO chromedriver: ChromeDriver was started successfully.
2023-02-02T01:16:38.379Z DEBUG @wdio/cli:utils: Finished to run "onPrepare" hook in 1195ms
2023-02-02T01:16:38.458Z INFO @wdio/cli:launcher: Run onWorkerStart hook
2023-02-02T01:16:38.458Z DEBUG @wdio/cli:utils: Finished to run "onWorkerStart" hook in 0ms
2023-02-02T01:16:38.460Z INFO @wdio/local-runner: Start worker 0-0 with arg: wdio.conf.js,--logLevel=debug
[0-0] 2023-02-02T01:16:40.416Z INFO @wdio/local-runner: Run worker command: run
[0-0] 2023-02-02T01:16:40.423Z DEBUG @wdio/config:ConfigParser: No compiler found, continue without compiling files
[0-0] 2023-02-02T01:16:40.429Z DEBUG @wdio/local-runner:utils: init remote session
[0-0] 2023-02-02T01:16:40.435Z DEBUG @wdio/utils:initialiseServices: initialise service "chromedriver" as NPM package
[0-0] 2023-02-02T01:16:40.565Z DEBUG @wdio/utils:initialiseServices: initialise service "image-comparison" as NPM package
[0-0]
[0-0]
[0-0]
[0-0] ##############################
[0-0] !!CLEARING!!
[0-0] ##############################
[0-0]
[0-0]
[0-0]
[0-0] RUNNING in chrome - C:\Users\steve\OneDrive\Documents\Bit Bucket\mandoe-visual-testing-02\test\specs\AU-solutions.spec.js
[0-0] 2023-02-02T01:16:56.192Z DEBUG @wdio/local-runner:utils: init remote session
[0-0] 2023-02-02T01:16:56.193Z INFO webdriver: Initiate new session using the WebDriver protocol
[0-0] 2023-02-02T01:16:56.324Z INFO webdriver: [POST] http://localhost:9515/session
[0-0] 2023-02-02T01:16:56.324Z INFO webdriver: DATA {
[0-0] capabilities: {
[0-0] alwaysMatch: { browserName: 'chrome', acceptInsecureCerts: true },
[0-0] firstMatch: [ {} ]
[0-0] },
[0-0] desiredCapabilities: { browserName: 'chrome', acceptInsecureCerts: true }
[0-0] }
DevTools listening on ws://127.0.0.1:55270/devtools/browser/ca337c5d-a3f4-4ab8-9491-8dee1580ace4
[0-0] 2023-02-02T01:16:56.914Z INFO wdio-image-comparison-service: Adding commands to global browser
[0-0] 2023-02-02T01:16:56.915Z DEBUG @wdio/utils:shim: Finished to run "before" hook in 0ms
[0-0] 2023-02-02T01:16:56.924Z INFO webdriver: COMMAND maximizeWindow()
[0-0] 2023-02-02T01:16:56.925Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/window/maximize
[0-0] 2023-02-02T01:16:57.057Z INFO webdriver: RESULT { height: 1048, width: 1936, x: -8, y: -8 }
[0-0] 2023-02-02T01:16:57.058Z INFO webdriver: COMMAND setTimeouts(undefined, 1000000, undefined)
[0-0] 2023-02-02T01:16:57.058Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/timeouts
[0-0] 2023-02-02T01:16:57.058Z INFO webdriver: DATA { pageLoad: 1000000 }
[0-0] 2023-02-02T01:16:57.061Z INFO webdriver: COMMAND refresh()
[0-0] 2023-02-02T01:16:57.061Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/refresh
[0-0] 2023-02-02T01:16:57.080Z INFO webdriver: COMMAND maximizeWindow()
[0-0] 2023-02-02T01:16:57.081Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/window/maximize
[0-0] 2023-02-02T01:16:57.081Z DEBUG @wdio/utils:shim: Finished to run "beforeTest" hook in 1ms
[0-0] 2023-02-02T01:16:57.082Z INFO webdriver: COMMAND navigateTo("https://mandoemedia.com/en-au/industries/hospitality/")
[0-0] 2023-02-02T01:16:57.082Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/url
[0-0] 2023-02-02T01:16:57.082Z INFO webdriver: DATA { url: 'https://mandoemedia.com/en-au/industries/hospitality/' }
[0-0] 2023-02-02T01:16:57.089Z INFO webdriver: RESULT { height: 1048, width: 1936, x: -8, y: -8 }
[6512:21616:0202/091702.102:ERROR:device_event_log_impl.cc(215)] [09:17:02.102] USB: usb_service_win.cc:415 Could not read device interface GUIDs: The system cannot find the file specified. (0x2)
[6512:21616:0202/091702.109:ERROR:device_event_log_impl.cc(215)] [09:17:02.109] USB: usb_device_handle_win.cc:1046 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
[6512:21616:0202/091702.112:ERROR:device_event_log_impl.cc(215)] [09:17:02.112] USB: usb_device_handle_win.cc:1046 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
[6512:21616:0202/091702.171:ERROR:device_event_log_impl.cc(215)] [09:17:02.172] USB: usb_device_handle_win.cc:1046 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
[0-0] 2023-02-02T01:17:11.413Z INFO webdriver: COMMAND saveFullPageScreen("AU-sol-hospitalityPage", <object>)
[0-0] 2023-02-02T01:17:11.414Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:11.414Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:11.415Z INFO webdriver: DATA { script: 'hideScrollBars(...) [258 bytes]', args: [ true ] }
[0-0] 2023-02-02T01:17:11.423Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:11.424Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:11.424Z INFO webdriver: DATA {
[0-0] script: 'setCustomCss(...) [1396 bytes]',
[0-0] args: [
[0-0] {
[0-0] addressBarPadding: 0,
[0-0] disableCSSAnimation: true,
[0-0] id: 'pic-css',
[0-0] toolBarPadding: 0
[0-0] }
[0-0] ]
[0-0] }
[0-0] 2023-02-02T01:17:11.433Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:11.433Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:11.433Z INFO webdriver: DATA { script: 'getScreenDimensions(...) [1221 bytes]', args: [] }
[0-0] 2023-02-02T01:17:11.467Z INFO webdriver: RESULT {
[0-0] dimensions: {
[0-0] body: { offsetHeight: 9392, scrollHeight: 9392 },
[0-0] html: {
[0-0] clientHeight: 916,
[0-0] clientWidth: 1920,
[0-0] offsetHeight: 9392,
[0-0] scrollHeight: 9392,
[0-0] scrollWidth: 1920
[0-0] },
[0-0] window: {
[0-0] devicePixelRatio: 1,
[0-0] innerHeight: 916,
[0-0] innerWidth: 1920,
[0-0] outerHeight: 1032,
[0-0] outerWidth: 1920,
[0-0] screenHeight: 1080,
[0-0] screenWidth: 1920
[0-0] }
[0-0] }
[0-0] }
[0-0] 2023-02-02T01:17:11.469Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:11.470Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:11.470Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 0 ] }
[0-0] 2023-02-02T01:17:12.993Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T01:17:12.994Z INFO webdriver: [GET] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/screenshot
[0-0] 2023-02-02T01:17:13.160Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T01:17:13.163Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:13.164Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:13.164Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-0] 2023-02-02T01:17:13.266Z INFO webdriver: RESULT 9392
[0-0] 2023-02-02T01:17:13.266Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:13.266Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:13.267Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 916 ] }
[0-0] 2023-02-02T01:17:14.786Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T01:17:14.786Z INFO webdriver: [GET] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/screenshot
[0-0] 2023-02-02T01:17:14.978Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T01:17:14.982Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:14.982Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:14.982Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-0] 2023-02-02T01:17:14.989Z INFO webdriver: RESULT 9392
[0-0] 2023-02-02T01:17:14.990Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:14.990Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:14.990Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 1832 ] }
[0-0] 2023-02-02T01:17:16.510Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T01:17:16.511Z INFO webdriver: [GET] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/screenshot
[0-0] 2023-02-02T01:17:16.794Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T01:17:16.798Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:16.799Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:16.799Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-0] 2023-02-02T01:17:16.806Z INFO webdriver: RESULT 9392
[0-0] 2023-02-02T01:17:16.806Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:16.807Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:16.807Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 2748 ] }
[0-0] 2023-02-02T01:17:18.315Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T01:17:18.316Z INFO webdriver: [GET] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/screenshot
[0-0] 2023-02-02T01:17:18.487Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T01:17:18.489Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:18.490Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:18.490Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-0] 2023-02-02T01:17:18.495Z INFO webdriver: RESULT 9392
[0-0] 2023-02-02T01:17:18.495Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:18.496Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:18.496Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 3664 ] }
[0-0] 2023-02-02T01:17:20.015Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T01:17:20.016Z INFO webdriver: [GET] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/screenshot
[0-0] 2023-02-02T01:17:20.225Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T01:17:20.229Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:20.229Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:20.229Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-0] 2023-02-02T01:17:20.239Z INFO webdriver: RESULT 9392
[0-0] 2023-02-02T01:17:20.239Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:20.240Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:20.240Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 4580 ] }
[0-0] 2023-02-02T01:17:21.761Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T01:17:21.762Z INFO webdriver: [GET] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/screenshot
[0-0] 2023-02-02T01:17:22.046Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T01:17:22.051Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:22.052Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:22.052Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-0] 2023-02-02T01:17:22.059Z INFO webdriver: RESULT 9392
[0-0] 2023-02-02T01:17:22.060Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:22.060Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:22.060Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 5496 ] }
[0-0] 2023-02-02T01:17:23.575Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T01:17:23.576Z INFO webdriver: [GET] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/screenshot
[0-0] 2023-02-02T01:17:23.923Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T01:17:23.931Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:23.931Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:23.931Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-0] 2023-02-02T01:17:23.937Z INFO webdriver: RESULT 9392
[0-0] 2023-02-02T01:17:23.937Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:23.938Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:23.938Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 6412 ] }
[0-0] 2023-02-02T01:17:25.460Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T01:17:25.460Z INFO webdriver: [GET] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/screenshot
[0-0] 2023-02-02T01:17:25.835Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T01:17:25.840Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:25.840Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:25.840Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-0] 2023-02-02T01:17:25.846Z INFO webdriver: RESULT 9392
[0-0] 2023-02-02T01:17:25.846Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:25.847Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:25.847Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 7328 ] }
[0-0] 2023-02-02T01:17:27.372Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T01:17:27.372Z INFO webdriver: [GET] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/screenshot
[0-0] 2023-02-02T01:17:27.540Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T01:17:27.542Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:27.542Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:27.542Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-0] 2023-02-02T01:17:27.549Z INFO webdriver: RESULT 9392
[0-0] 2023-02-02T01:17:27.549Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:27.549Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:27.549Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 8244 ] }
[0-0] 2023-02-02T01:17:29.060Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T01:17:29.060Z INFO webdriver: [GET] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/screenshot
[0-0] 2023-02-02T01:17:29.269Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T01:17:29.271Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:29.271Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:29.271Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-0] 2023-02-02T01:17:29.277Z INFO webdriver: RESULT 9392
[0-0] 2023-02-02T01:17:29.277Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:29.277Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:29.277Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 9160 ] }
[0-0] 2023-02-02T01:17:30.795Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T01:17:30.795Z INFO webdriver: [GET] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/screenshot
[0-0] 2023-02-02T01:17:30.944Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T01:17:30.945Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:30.945Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:30.945Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-0] 2023-02-02T01:17:30.953Z INFO webdriver: RESULT 9392
[0-0] 2023-02-02T01:17:33.518Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:33.519Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:33.519Z INFO webdriver: DATA { script: 'hideScrollBars(...) [258 bytes]', args: [ false ] }
[0-0] 2023-02-02T01:17:33.532Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-0] 2023-02-02T01:17:33.532Z INFO webdriver: [POST] http://localhost:9515/session/53714d5b5c29515b45060a60e16cbee8/execute/sync
[0-0] 2023-02-02T01:17:33.532Z INFO webdriver: DATA {
[0-0] script: 'removeElementFromDom(...) [197 bytes]',
[0-0] args: [ 'pic-css' ]
[0-0] }
[0-0] 2023-02-02T01:17:33.540Z INFO webdriver: RESULT {
[0-0] fileName: 'AU-sol-hospitalityPage-.png',
[0-0] path: 'C:\\Users\\steve\\OneDrive\\Documents\\Bit Bucket\\mandoe-visual-testing-02\\tests\\visualRegressionDiff\\actual',
[0-0] devicePixelRatio: 1
[0-0] }
Hi @sdoigmm
I can't see what the error is in the logs. The service is added correctly, you are able to create a screenshot with the saveFullPageScreen
command which also means that the commands are added.
Hi @wswebcreation
In the interim, I have powered off my laptop, rebooted, connected ExpressVPN to connect to a UK VPN, and run some of my UK subdirectory tests, e.g. on https://mandoemedia.com/en-gb/*
They all passed.
I disconnect from ExpressVPN, reconnect to a USA VPN, and run some of my USA main website tests, e.g. http://mandoemedia.com/* and they all fail, with the original error
TypeError: browser.saveFullPageScreen is not a function
Here is some of the log output running some of the USA tests:
[0-2] 2023-02-02T12:41:11.531Z INFO webdriver: COMMAND navigateTo("https://mandoemedia.com/blog/topic/case-studies/")
[0-2] 2023-02-02T12:41:11.532Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/url
[0-2] 2023-02-02T12:41:11.532Z INFO webdriver: DATA { url: 'https://mandoemedia.com/blog/topic/case-studies/' }
[0-2] 2023-02-02T12:41:11.588Z INFO webdriver: RESULT { height: 1048, width: 1936, x: -8, y: -8 }
[0-0] 2023-02-02T12:41:13.225Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T12:41:13.225Z INFO webdriver: [GET] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/screenshot
[0-0] 2023-02-02T12:41:13.225Z DEBUG @wdio/utils:shim: Finished to run "afterTest" hook in 1ms
[0-0] TypeError in "Products page.should compare Products-how-it-works page screenshots"
TypeError: browser.checkFullPageScreen is not a function
at Context.<anonymous> (C:\Users\steve\OneDrive\Documents\Bit Bucket\mandoe-visual-testing-02\test\specs\US-products.spec.js:71:34)
[0-0] 2023-02-02T12:41:13.229Z INFO webdriver: COMMAND deleteAllCookies()
[0-0] 2023-02-02T12:41:13.230Z INFO webdriver: [DELETE] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/cookie
[0-0] 2023-02-02T12:41:13.231Z INFO webdriver: COMMAND executeScript("sessionStorage.clear()", <object>)
[0-0] 2023-02-02T12:41:13.231Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/execute/sync
[0-0] 2023-02-02T12:41:13.232Z INFO webdriver: DATA { script: 'sessionStorage.clear()', args: [] }
[0-0] 2023-02-02T12:41:13.234Z INFO webdriver: COMMAND executeScript("window.localStorage.clear()", <object>)
[0-0] 2023-02-02T12:41:13.234Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/execute/sync
[0-0] 2023-02-02T12:41:13.234Z INFO webdriver: DATA { script: 'window.localStorage.clear()', args: [] }
[0-0] 2023-02-02T12:41:13.237Z INFO webdriver: COMMAND maximizeWindow()
[0-0] 2023-02-02T12:41:13.237Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/window/maximize
[0-0] 2023-02-02T12:41:13.595Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T12:41:13.700Z INFO webdriver: RESULT { height: 1048, width: 1936, x: -8, y: -8 }
[0-0] 2023-02-02T12:41:13.701Z INFO webdriver: COMMAND setTimeouts(undefined, 1000000, undefined)
[0-0] 2023-02-02T12:41:13.701Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/timeouts
[0-0] 2023-02-02T12:41:13.701Z INFO webdriver: DATA { pageLoad: 1000000 }
[0-0] 2023-02-02T12:41:13.704Z INFO webdriver: COMMAND refresh()
[0-0] 2023-02-02T12:41:13.704Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/refresh
[0-0] 2023-02-02T12:41:13.716Z INFO webdriver: COMMAND maximizeWindow()
[0-0] 2023-02-02T12:41:13.716Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/window/maximize
[0-0] 2023-02-02T12:41:13.717Z DEBUG @wdio/utils:shim: Finished to run "beforeTest" hook in 1ms
[0-0] 2023-02-02T12:41:13.718Z INFO webdriver: COMMAND navigateTo("https://mandoemedia.com/industries2/")
[0-0] 2023-02-02T12:41:13.719Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/url
[0-0] 2023-02-02T12:41:13.719Z INFO webdriver: DATA { url: 'https://mandoemedia.com/industries2/' }
[0-0] 2023-02-02T12:41:15.358Z INFO webdriver: RESULT { height: 1048, width: 1936, x: -8, y: -8 }
[0-2] 2023-02-02T12:41:16.521Z INFO webdriver: COMMAND checkFullPageScreen("US-Res-case-studiesPage", <object>)
[0-2] 2023-02-02T12:41:16.524Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-2] 2023-02-02T12:41:16.524Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:16.524Z INFO webdriver: DATA { script: 'hideScrollBars(...) [258 bytes]', args: [ true ] }
[0-2] 2023-02-02T12:41:16.625Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-2] 2023-02-02T12:41:16.625Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:16.626Z INFO webdriver: DATA {
[0-2] script: 'setCustomCss(...) [1396 bytes]',
[0-2] args: [
[0-2] {
[0-2] addressBarPadding: 0,
[0-2] disableCSSAnimation: true,
[0-2] id: 'pic-css',
[0-2] toolBarPadding: 0
[0-2] }
[0-2] ]
[0-2] }
[0-2] 2023-02-02T12:41:16.673Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-2] 2023-02-02T12:41:16.673Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:16.673Z INFO webdriver: DATA { script: 'getScreenDimensions(...) [1221 bytes]', args: [] }
[0-2] 2023-02-02T12:41:16.693Z INFO webdriver: RESULT {
[0-2] dimensions: {
[0-2] body: { offsetHeight: 916, scrollHeight: 916 },
[0-2] html: {
[0-2] clientHeight: 916,
[0-2] clientWidth: 1920,
[0-2] offsetHeight: 916,
[0-2] scrollHeight: 916,
[0-2] scrollWidth: 1920
[0-2] },
[0-2] window: {
[0-2] devicePixelRatio: 1,
[0-2] innerHeight: 916,
[0-2] innerWidth: 1920,
[0-2] outerHeight: 1032,
[0-2] outerWidth: 1920,
[0-2] screenHeight: 1080,
[0-2] screenWidth: 1920
[0-2] }
[0-2] }
[0-2] }
[0-2] 2023-02-02T12:41:16.694Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-2] 2023-02-02T12:41:16.695Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:16.695Z INFO webdriver: DATA { script: 'scrollToPosition(...) [155 bytes]', args: [ 0 ] }
[0-2] 2023-02-02T12:41:18.377Z INFO webdriver: COMMAND takeScreenshot()
[0-2] 2023-02-02T12:41:18.377Z INFO webdriver: [GET] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/screenshot
[0-2] 2023-02-02T12:41:18.616Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-2] 2023-02-02T12:41:18.617Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-2] 2023-02-02T12:41:18.617Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:18.617Z INFO webdriver: DATA { script: 'getDocumentScrollHeight(...) [1384 bytes]', args: [] }
[0-2] 2023-02-02T12:41:18.624Z INFO webdriver: RESULT 916
[0-2] 2023-02-02T12:41:18.914Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-2] 2023-02-02T12:41:18.915Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:18.915Z INFO webdriver: DATA { script: 'hideScrollBars(...) [258 bytes]', args: [ false ] }
[0-2] 2023-02-02T12:41:18.927Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-2] 2023-02-02T12:41:18.927Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:18.927Z INFO webdriver: DATA {
[0-2] script: 'removeElementFromDom(...) [197 bytes]',
[0-2] args: [ 'pic-css' ]
[0-2] }
[0-2] 2023-02-02T12:41:19.544Z INFO webdriver: RESULT 0
[0-2] 2023-02-02T12:41:19.554Z DEBUG @wdio/utils:shim: Finished to run "afterTest" hook in 1ms
[0-2] 2023-02-02T12:41:19.556Z INFO webdriver: COMMAND deleteAllCookies()
[0-2] 2023-02-02T12:41:19.557Z INFO webdriver: [DELETE] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/cookie
[0-2] 2023-02-02T12:41:19.559Z INFO webdriver: COMMAND executeScript("sessionStorage.clear()", <object>)
[0-2] 2023-02-02T12:41:19.559Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:19.562Z INFO webdriver: DATA { script: 'sessionStorage.clear()', args: [] }
[0-2] 2023-02-02T12:41:19.568Z INFO webdriver: COMMAND executeScript("window.localStorage.clear()", <object>)
[0-2] 2023-02-02T12:41:19.569Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:19.569Z INFO webdriver: DATA { script: 'window.localStorage.clear()', args: [] }
[0-2] 2023-02-02T12:41:19.574Z INFO webdriver: COMMAND maximizeWindow()
[0-2] 2023-02-02T12:41:19.575Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/window/maximize
[0-2] 2023-02-02T12:41:19.702Z INFO webdriver: RESULT { height: 1048, width: 1936, x: -8, y: -8 }
[0-2] 2023-02-02T12:41:19.703Z INFO webdriver: COMMAND setTimeouts(undefined, 1000000, undefined)
[0-2] 2023-02-02T12:41:19.703Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/timeouts
[0-2] 2023-02-02T12:41:19.703Z INFO webdriver: DATA { pageLoad: 1000000 }
[0-2] 2023-02-02T12:41:19.707Z INFO webdriver: COMMAND refresh()
[0-2] 2023-02-02T12:41:19.707Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/refresh
[0-2] 2023-02-02T12:41:19.721Z INFO webdriver: COMMAND maximizeWindow()
[0-2] 2023-02-02T12:41:19.721Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/window/maximize
[0-2] 2023-02-02T12:41:19.722Z DEBUG @wdio/utils:shim: Finished to run "beforeTest" hook in 1ms
[0-2] 2023-02-02T12:41:19.723Z INFO webdriver: COMMAND navigateTo("https://mandoemedia.com/about-us/")
[0-2] 2023-02-02T12:41:19.723Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/url
[0-2] 2023-02-02T12:41:19.723Z INFO webdriver: DATA { url: 'https://mandoemedia.com/about-us/' }
[0-2] 2023-02-02T12:41:20.787Z INFO webdriver: RESULT { height: 1048, width: 1936, x: -8, y: -8 }
[0-0] 2023-02-02T12:41:21.615Z INFO webdriver: COMMAND takeScreenshot()
[0-0] 2023-02-02T12:41:21.616Z INFO webdriver: [GET] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/screenshot
[0-0] 2023-02-02T12:41:21.618Z DEBUG @wdio/utils:shim: Finished to run "afterTest" hook in 3ms
[0-0] TypeError in "Products page.should save Products-industries2 page screenshots"
TypeError: browser.saveFullPageScreen is not a function
at Context.<anonymous> (C:\Users\steve\OneDrive\Documents\Bit Bucket\mandoe-visual-testing-02\test\specs\US-products.spec.js:81:23)
[0-0] 2023-02-02T12:41:21.621Z INFO webdriver: COMMAND deleteAllCookies()
[0-0] 2023-02-02T12:41:21.621Z INFO webdriver: [DELETE] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/cookie
[0-0] 2023-02-02T12:41:21.626Z INFO webdriver: COMMAND executeScript("sessionStorage.clear()", <object>)
[0-0] 2023-02-02T12:41:21.627Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/execute/sync
[0-0] 2023-02-02T12:41:21.628Z INFO webdriver: DATA { script: 'sessionStorage.clear()', args: [] }
[0-0] 2023-02-02T12:41:21.633Z INFO webdriver: COMMAND executeScript("window.localStorage.clear()", <object>)
[0-0] 2023-02-02T12:41:21.634Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/execute/sync
[0-0] 2023-02-02T12:41:21.634Z INFO webdriver: DATA { script: 'window.localStorage.clear()', args: [] }
[0-0] 2023-02-02T12:41:21.640Z INFO webdriver: COMMAND maximizeWindow()
[0-0] 2023-02-02T12:41:21.640Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/window/maximize
[0-0] 2023-02-02T12:41:22.116Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-0] 2023-02-02T12:41:22.230Z INFO webdriver: RESULT { height: 1048, width: 1936, x: -8, y: -8 }
[0-0] 2023-02-02T12:41:22.231Z INFO webdriver: COMMAND setTimeouts(undefined, 1000000, undefined)
[0-0] 2023-02-02T12:41:22.231Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/timeouts
[0-0] 2023-02-02T12:41:22.231Z INFO webdriver: DATA { pageLoad: 1000000 }
[0-0] 2023-02-02T12:41:22.235Z INFO webdriver: COMMAND refresh()
[0-0] 2023-02-02T12:41:22.235Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/refresh
[0-1] 2023-02-02T12:41:22.348Z INFO webdriver: RESULT 6.01
[0-1] 2023-02-02T12:41:22.366Z INFO webdriver: COMMAND takeScreenshot()
[0-1] 2023-02-02T12:41:22.367Z INFO webdriver: [GET] http://localhost:9515/session/3500f858611bb2d9062ca3575f83c676/screenshot
[0-1] 2023-02-02T12:41:22.369Z DEBUG @wdio/utils:shim: Finished to run "afterTest" hook in 3ms
[0-1] Error in "Solutions page.should compare Solutions-hospitality page screenshots"
Error: expect(received).toEqual(expected) // deep equality
Expected: 0
Received: 6.01
at Context.<anonymous> (C:\Users\steve\OneDrive\Documents\Bit Bucket\mandoe-visual-testing-02\test\specs\US-solutions.spec.js:33:103)
[0-1] 2023-02-02T12:41:22.389Z INFO webdriver: COMMAND deleteAllCookies()
[0-1] 2023-02-02T12:41:22.390Z INFO webdriver: [DELETE] http://localhost:9515/session/3500f858611bb2d9062ca3575f83c676/cookie
[0-1] 2023-02-02T12:41:22.452Z INFO webdriver: COMMAND executeScript("sessionStorage.clear()", <object>)
[0-1] 2023-02-02T12:41:22.453Z INFO webdriver: [POST] http://localhost:9515/session/3500f858611bb2d9062ca3575f83c676/execute/sync
[0-1] 2023-02-02T12:41:22.453Z INFO webdriver: DATA { script: 'sessionStorage.clear()', args: [] }
[0-1] 2023-02-02T12:41:22.459Z INFO webdriver: COMMAND executeScript("window.localStorage.clear()", <object>)
[0-1] 2023-02-02T12:41:22.459Z INFO webdriver: [POST] http://localhost:9515/session/3500f858611bb2d9062ca3575f83c676/execute/sync
[0-1] 2023-02-02T12:41:22.460Z INFO webdriver: DATA { script: 'window.localStorage.clear()', args: [] }
[0-1] 2023-02-02T12:41:22.472Z INFO webdriver: COMMAND maximizeWindow()
[0-1] 2023-02-02T12:41:22.473Z INFO webdriver: [POST] http://localhost:9515/session/3500f858611bb2d9062ca3575f83c676/window/maximize
[0-1] 2023-02-02T12:41:22.778Z INFO webdriver: RESULT iVBORw0KGgoAAAANSUhEUgAAB4AAAAOUCAYAAABDqi5YAAAAAXNSR0IArs4c6...
[0-1] 2023-02-02T12:41:22.910Z INFO webdriver: RESULT { height: 1048, width: 1936, x: -8, y: -8 }
[0-1] 2023-02-02T12:41:22.911Z INFO webdriver: COMMAND setTimeouts(undefined, 1000000, undefined)
[0-1] 2023-02-02T12:41:22.911Z INFO webdriver: [POST] http://localhost:9515/session/3500f858611bb2d9062ca3575f83c676/timeouts
[0-1] 2023-02-02T12:41:22.911Z INFO webdriver: DATA { pageLoad: 1000000 }
[0-1] 2023-02-02T12:41:22.916Z INFO webdriver: COMMAND refresh()
[0-1] 2023-02-02T12:41:22.916Z INFO webdriver: [POST] http://localhost:9515/session/3500f858611bb2d9062ca3575f83c676/refresh
[0-0] 2023-02-02T12:41:24.204Z INFO webdriver: COMMAND maximizeWindow()
[0-0] 2023-02-02T12:41:24.205Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/window/maximize
[0-0] 2023-02-02T12:41:24.207Z DEBUG @wdio/utils:shim: Finished to run "beforeTest" hook in 3ms
[0-0] 2023-02-02T12:41:24.209Z INFO webdriver: COMMAND navigateTo("https://mandoemedia.com/industries2/")
[0-0] 2023-02-02T12:41:24.209Z INFO webdriver: [POST] http://localhost:9515/session/b47af9b82cdc504d3b0bee3ac01d28fa/url
[0-0] 2023-02-02T12:41:24.209Z INFO webdriver: DATA { url: 'https://mandoemedia.com/industries2/' }
[0-0] 2023-02-02T12:41:24.275Z INFO webdriver: RESULT { height: 1048, width: 1936, x: -8, y: -8 }
[0-1] 2023-02-02T12:41:24.376Z INFO webdriver: COMMAND maximizeWindow()
[0-1] 2023-02-02T12:41:24.377Z INFO webdriver: [POST] http://localhost:9515/session/3500f858611bb2d9062ca3575f83c676/window/maximize
[0-1] 2023-02-02T12:41:24.378Z DEBUG @wdio/utils:shim: Finished to run "beforeTest" hook in 2ms
[0-1] 2023-02-02T12:41:24.379Z INFO webdriver: COMMAND navigateTo("https://mandoemedia.com/industries/gift-store/")
[0-1] 2023-02-02T12:41:24.380Z INFO webdriver: [POST] http://localhost:9515/session/3500f858611bb2d9062ca3575f83c676/url
[0-1] 2023-02-02T12:41:24.380Z INFO webdriver: DATA { url: 'https://mandoemedia.com/industries/gift-store/' }
[0-1] 2023-02-02T12:41:24.481Z INFO webdriver: RESULT { height: 1048, width: 1936, x: -8, y: -8 }
[0-2] 2023-02-02T12:41:26.271Z INFO webdriver: COMMAND saveFullPageScreen("US-Res-about-usPage", <object>)
[0-2] 2023-02-02T12:41:26.272Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-2] 2023-02-02T12:41:26.273Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:26.273Z INFO webdriver: DATA { script: 'hideScrollBars(...) [258 bytes]', args: [ true ] }
[0-2] 2023-02-02T12:41:26.293Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-2] 2023-02-02T12:41:26.294Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:26.294Z INFO webdriver: DATA {
[0-2] script: 'setCustomCss(...) [1396 bytes]',
[0-2] args: [
[0-2] {
[0-2] addressBarPadding: 0,
[0-2] disableCSSAnimation: true,
[0-2] id: 'pic-css',
[0-2] toolBarPadding: 0
[0-2] }
[0-2] ]
[0-2] }
[0-2] 2023-02-02T12:41:26.350Z INFO webdriver: COMMAND executeScript(<fn>, <object>)
[0-2] 2023-02-02T12:41:26.350Z INFO webdriver: [POST] http://localhost:9515/session/0a064493906d9e543721cb82a6f4aa2d/execute/sync
[0-2] 2023-02-02T12:41:26.351Z INFO webdriver: DATA { script: 'getScreenDimensions(...) [1221 bytes]', args: [] }
[0-2] 2023-02-02T12:41:26.360Z INFO webdriver: RESULT {
[0-2] dimensions: {
[0-2] body: { offsetHeight: 4691, scrollHeight: 4691 },
[0-2] html: {
[0-2] clientHeight: 916,
[0-2] clientWidth: 1920,
[0-2] offsetHeight: 4691,
[0-2] scrollHeight: 4691,
[0-2] scrollWidth: 1920
[0-2] },
[0-2] window: {
[0-2] devicePixelRatio: 1,
[0-2] innerHeight: 916,
[0-2] innerWidth: 1920,
[0-2] outerHeight: 1032,
[0-2] outerWidth: 1920,
[0-2] screenHeight: 1080,
[0-2] screenWidth: 1920
[0-2] }
[0-2] }
[0-2] }
This is not related to the module, but please provide a reproducible example for debugging.
Sure.
wdio.conf.js
:
const { join } = require('path')
exports.config = {
//
// ====================
// Runner Configuration
// ====================
//
//
// ==================
// Specify Test Files
// ==================
// Define which test specs should run. The pattern is relative to the directory
// from which `wdio` was called.
//
// The specs are defined as an array of spec files (optionally using wildcards
// that will be expanded). The test for each spec file will be run in a separate
// worker process. In order to have a group of spec files run in the same worker
// process simply enclose them in an array within the specs array.
//
// If you are calling `wdio` from an NPM script (see https://docs.npmjs.com/cli/run-script),
// then the current working directory is where your `package.json` resides, so `wdio`
// will be called from there.
//
specs: [
// './test/specs/**/sandbox-url.spec.js',
// './test/specs/**/UK-products.spec.js', //passed
// './test/specs/**/UK-solutions.spec.js', //passed except for dynamic content
// './test/specs/**/UK-resources.spec.js', //passed except for dynamic content
// './test/specs/**/UK-tempCategory.spec.js', //passed
// './test/specs/**/UK-blogPages.spec.js', //passed
// './test/specs/**/UK-megaMenu.spec.js', //passed
'./test/specs/**/US-products.spec.js', //passed
// './test/specs/**/US-solutions.spec.js', //passed
// './test/specs/**/US-resources.spec.js', //passed
// './test/specs/**/US-tempCategory.spec.js', //passed
// './test/specs/**/US-blogPages.spec.js', //passed
// './test/specs/**/US-megaMenu.spec.js', //passed
// './test/specs/**/AU-products.spec.js', //errors
// './test/specs/**/AU-solutions.spec.js', //passed
// './test/specs/**/AU-resources.spec.js', //passed
// './test/specs/**/AU-tempCategory.spec.js', //passed
// './test/specs/**/AU-blogPages.spec.js', //passed
// './test/specs/**/AU-megaMenu.spec.js', // 1 error
],
// Patterns to exclude.
exclude: [
// 'path/to/excluded/files'
],
//
// ============
// Capabilities
// ============
// Define your capabilities here. WebdriverIO can run multiple capabilities at the same
// time. Depending on the number of capabilities, WebdriverIO launches several test
// sessions. Within your capabilities you can overwrite the spec and exclude options in
// order to group specific specs to a specific capability.
//
// First, you can define how many instances should be started at the same time. Let's
// say you have 3 different capabilities (Chrome, Firefox, and Safari) and you have
// set maxInstances to 1; wdio will spawn 3 processes. Therefore, if you have 10 spec
// files and you set maxInstances to 10, all spec files will get tested at the same time
// and 30 processes will get spawned. The property handles how many capabilities
// from the same test should run tests.
//
maxInstances: 10,
//
// If you have trouble getting all important capabilities together, check out the
// Sauce Labs platform configurator - a great tool to configure your capabilities:
// https://saucelabs.com/platform/platform-configurator
//
capabilities: [
{
// maxInstances can get overwritten per capability. So if you have an in-house Selenium
// grid with only 5 firefox instances available you can make sure that not more than
// 5 instances get started at a time.
maxInstances: 10,
//
browserName: 'chrome',
acceptInsecureCerts: true
// If outputDir is provided WebdriverIO can capture driver session logs
// it is possible to configure which logTypes to include/exclude.
// excludeDriverLogs: ['*'], // pass '*' to exclude all driver session logs
// excludeDriverLogs: ['bugreport', 'server'],
},
],
//
// ===================
// Test Configurations
// ===================
// Define all options that are relevant for the WebdriverIO instance here
//
// Level of logging verbosity: trace | debug | info | warn | error | silent
logLevel: 'error',
//
// Set specific log levels per logger
// loggers:
// - webdriver, webdriverio
// - @wdio/browserstack-service, @wdio/devtools-service, @wdio/sauce-service
// - @wdio/mocha-framework, @wdio/jasmine-framework
// - @wdio/local-runner
// - @wdio/sumologic-reporter
// - @wdio/cli, @wdio/config, @wdio/utils
// Level of logging verbosity: trace | debug | info | warn | error | silent
// logLevels: {
// webdriver: 'info',
// '@wdio/appium-service': 'info'
// },
//
// If you only want to run your tests until a specific amount of tests have failed use
// bail (default is 0 - don't bail, run all tests).
bail: 0,
//
// Set a base URL in order to shorten url command calls. If your `url` parameter starts
// with `/`, the base url gets prepended, not including the path portion of your baseUrl.
// If your `url` parameter starts without a scheme or `/` (like `some/path`), the base url
// gets prepended directly.
baseUrl: 'https://mandoemedia.com/',
//
// Default timeout for all waitFor* commands.
waitforTimeout: 10000,
//
// Default timeout in milliseconds for request
// if browser driver or grid doesn't send response
connectionRetryTimeout: 500000,
//
// Default request retries count
connectionRetryCount: 3,
//
// Test runner services
// Services take over a specific job you don't want to take care of. They enhance
// your test setup with almost no effort. Unlike plugins, they don't add new
// commands. Instead, they hook themselves up into the test process.
services: [['chromedriver'],
['image-comparison',
{
baselineFolder: join(process.cwd(), './tests/visualRegressionBaseline/'),
formatImageName: '{tag}-{logName}',
screenshotPath: join(process.cwd(), './tests/visualRegressionDiff/'),
autoSaveBaseline: true,
blockOutStatusBar: true,
blockOutToolBar: true,
clearRuntimeFolder: true,
disableCSSAnimation: true
}]
],
// Framework you want to run your specs with.
// The following are supported: Mocha, Jasmine, and Cucumber
// see also: https://webdriver.io/docs/frameworks
//
// Make sure you have the wdio adapter package for the specific framework installed
// before running any tests.
framework: 'mocha',
//
// The number of times to retry the entire specfile when it fails as a whole
// specFileRetries: 1,
//
// Delay in seconds between the spec file retry attempts
// specFileRetriesDelay: 0,
//
// Whether or not retried specfiles should be retried immediately or deferred to the end of the queue
// specFileRetriesDeferred: false,
//
// Test reporter for stdout.
// The only one supported by default is 'dot'
// see also: https://webdriver.io/docs/dot-reporter
reporters: ['spec'/*['Allure',{
outputDir:'allure-results',
disableWebdriverStepsReporting: true,
disableWebdriverScreenshotsReporting: false,
}]*/],
//
// Options to be passed to Mocha.
// See the full list at http://mochajs.org/
mochaOpts: {
ui: 'bdd',
timeout: 6000000000
},
//
// =====
// Hooks
// =====
// WebdriverIO provides several hooks you can use to interfere with the test process in order to enhance
// it and to build services around it. You can either apply a single function or an array of
// methods to it. If one of them returns with a promise, WebdriverIO will wait until that promise got
// resolved to continue.
/**
* Gets executed once before all workers get launched.
* @param {Object} config wdio configuration object
* @param {Array.<Object>} capabilities list of capabilities details
*/
// onPrepare: function (config, capabilities) {
// },
/**
* Gets executed before a worker process is spawned and can be used to initialise specific service
* for that worker as well as modify runtime environments in an async fashion.
* @param {String} cid capability id (e.g 0-0)
* @param {[type]} caps object containing capabilities for session that will be spawn in the worker
* @param {[type]} specs specs to be run in the worker process
* @param {[type]} args object that will be merged with the main configuration once worker is initialized
* @param {[type]} execArgv list of string arguments passed to the worker process
*/
// onWorkerStart: function (cid, caps, specs, args, execArgv) {
// },
/**
* Gets executed just after a worker process has exited.
* @param {String} cid capability id (e.g 0-0)
* @param {Number} exitCode 0 - success, 1 - fail
* @param {[type]} specs specs to be run in the worker process
* @param {Number} retries number of retries used
*/
// onWorkerEnd: function (cid, exitCode, specs, retries) {
// },
/**
* Gets executed just before initialising the webdriver session and test framework. It allows you
* to manipulate configurations depending on the capability or spec.
* @param {Object} config wdio configuration object
* @param {Array.<Object>} capabilities list of capabilities details
* @param {Array.<String>} specs List of spec file paths that are to be run
* @param {String} cid worker id (e.g. 0-0)
*/
// beforeSession: function (config, capabilities, specs, cid) {
// },
/**
* Gets executed before test execution begins. At this point you can access to all global
* variables like `browser`. It is the perfect place to define custom commands.
* @param {Array.<Object>} capabilities list of capabilities details
* @param {Array.<String>} specs List of spec file paths that are to be run
* @param {Object} browser instance of created browser/device session
*/
// before: function (capabilities, specs) {
// },
/**
* Runs before a WebdriverIO command gets executed.
* @param {String} commandName hook command name
* @param {Array} args arguments that command would receive
*/
// beforeCommand: function (commandName, args) {
// },
/**
* Hook that gets executed before the suite starts
* @param {Object} suite suite details
*/
// beforeSuite: function (suite) {
// },
/**
* Function to be executed before a test (in Mocha/Jasmine) starts.
*/
beforeTest: function (test, context) {
browser.maximizeWindow();
},
/**
* Hook that gets executed _before_ a hook within the suite starts (e.g. runs before calling
* beforeEach in Mocha)
*/
// beforeHook: function (test, context) {
// },
/**
* Hook that gets executed _after_ a hook within the suite starts (e.g. runs after calling
* afterEach in Mocha)
*/
// afterHook: function (test, context, { error, result, duration, passed, retries }) {
// },
/**
* Function to be executed after a test (in Mocha/Jasmine only)
* @param {Object} test test object
* @param {Object} context scope object the test was executed with
* @param {Error} result.error error object in case the test fails, otherwise `undefined`
* @param {Any} result.result return object of test function
* @param {Number} result.duration duration of test
* @param {Boolean} result.passed true if test has passed, otherwise false
* @param {Object} result.retries informations to spec related retries, e.g. `{ attempts: 0, limit: 0 }`
*/
afterTest: function (test, context, { error, result, duration, passed, retries }) {
if (error) {
browser.takeScreenshot();
}
},
/**
* Hook that gets executed after the suite has ended
* @param {Object} suite suite details
*/
// afterSuite: function (suite) {
// },
/**
* Runs after a WebdriverIO command gets executed
* @param {String} commandName hook command name
* @param {Array} args arguments that command would receive
* @param {Number} result 0 - command success, 1 - command error
* @param {Object} error error object if any
*/
// afterCommand: function (commandName, args, result, error) {
// },
/**
* Gets executed after all tests are done. You still have access to all global variables from
* the test.
* @param {Number} result 0 - test pass, 1 - test fail
* @param {Array.<Object>} capabilities list of capabilities details
* @param {Array.<String>} specs List of spec file paths that ran
*/
// after: function (result, capabilities, specs) {
// },
/**
* Gets executed right after terminating the webdriver session.
* @param {Object} config wdio configuration object
* @param {Array.<Object>} capabilities list of capabilities details
* @param {Array.<String>} specs List of spec file paths that ran
*/
// afterSession: function (config, capabilities, specs) {
// },
/**
* Gets executed after all workers got shut down and the process is about to exit. An error
* thrown in the onComplete hook will result in the test run failing.
* @param {Object} exitCode 0 - success, 1 - fail
* @param {Object} config wdio configuration object
* @param {Array.<Object>} capabilities list of capabilities details
* @param {<Object>} results object containing test results
*/
// onComplete: function(exitCode, config, capabilities, results) {
// },
/**
* Gets executed when a refresh happens.
* @param {String} oldSessionId session ID of the old session
* @param {String} newSessionId session ID of the new session
*/
// onReload: function(oldSessionId, newSessionId) {
// }
}
//If headless is an argument, run Chrome in headless mode
if (process.argv.includes('headless')) {
exports.config.capabilities[0]['goog:chromeOptions'] = {
args: ["--headless"]
};
}
US-products.spec.js
:
const HomePage = require('../pageobjects/home.page');
describe('Products page', () => {
beforeEach(async () => {
await browser.maximizeWindow()
await browser.setTimeout({ 'pageLoad':1000000 })
await browser.refresh()
});
afterEach(() => {
browser.execute('window.localStorage.clear()');
browser.deleteAllCookies()
browser.execute('sessionStorage.clear()')
});
// //===================================================Products- Features page secton 6 pages==============================================================================================================
it('should save Products-Features page screenshotsscreenshots', async () => {
await browser.url('/features/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await browser.saveFullPageScreen('US-prod-featuresPage', { });
});
it('should compare Products-Features page screenshots', async () => {
await browser.url('/features/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await expect(await browser.checkFullPageScreen('US-prod-featuresPage', { /* some options */ })).toEqual(0);
});
// //===================================================Products- templates page secton 1==============================================================================================================
it('should save Products-Templates page screenshots', async () => {
await browser.url('/templates/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await browser.saveFullPageScreen('US-prod-templatesPage', { });
});
it('should compare Products-Templates page screenshots', async () => {
await browser.url('/templates/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await expect(await browser.checkFullPageScreen('US-prod-templatesPage', { /* some options */ })).toEqual(0);
});
//===================================================Products- how-it-works page secton 1==============================================================================================================
it('should save Products-how-it-works page screenshots', async () => {
await browser.url('/how-it-works/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await browser.saveFullPageScreen('US-prod-how-it-worksPage', { });
});
it('should compare Products-how-it-works page screenshots', async () => {
await browser.url('/how-it-works/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await expect(await browser.checkFullPageScreen('US-prod-how-it-worksPage', { /* some options */ })).toEqual(0);
});
//===================================================Products- industries2 page secton 1==============================================================================================================
it('should save Products-industries2 page screenshots', async () => {
await browser.url('/industries2/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await browser.saveFullPageScreen('US-prod-industries2Page', { });
});
it('should compare Products-industries2 page screenshots', async () => {
await browser.url('/industries2/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await expect(await browser.checkFullPageScreen('US-prod-industries2Page', { /* some options */ })).toEqual(0);
});
//===================================================Products- ids-getting-started-guide page secton 1==============================================================================================================
it('should save Products-ids-getting-started-guide page screenshots', async () => {
await browser.url('/ids-getting-started-guide/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await browser.saveFullPageScreen('US-prod-ids-getting-started-guidePage', { });
});
it('should compare Products-ids-getting-started-guide page screenshots', async () => {
await browser.url('/ids-getting-started-guide/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await expect(await browser.checkFullPageScreen('US-prod-ids-getting-started-guidePage', { /* some options */ })).toEqual(0);
});
//===================================================Products- download-player page secton 1==============================================================================================================
it('should save Products-download-player page screenshots', async () => {
await browser.url('/download-player/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await browser.saveFullPageScreen('US-prod-download-playerPage', { });
});
it('should compare Products-download-player page screenshots', async () => {
await browser.url('/download-player/');
await browser.pause(4000)
// await(await HomePage.talktoSales).moveTo()
// await browser.pause(15000)
// await(await HomePage.intercomBtn).moveTo()
// await browser.pause(1000)
await expect(await browser.checkFullPageScreen('US-prod-download-playerPage', { /* some options */ })).toEqual(0);
});
});
/pageobjects/home.page.js
:
const Page = require('./page');
class HomePage extends Page {
get locationtclick() {return $("(//div)[239]")}
get talktoSales(){return $("//a[@class='buttonLink_blueFilled__o04lE']")}
get startFreeTrial(){return $("//a[@class='buttonLink_blueFilled__o04lE']")}
get popUpclick() {return $("//div[@class='spu-container']")}
get locationtxt () {return $("//div[@class='siteFooter_flagFlex__eaEyZ']/a[3]")}
get locationtxt1 () {return $("//div[@class='siteFooter_flagFlex__eaEyZ']/a[2]")}
get mandoeTxt () {return $("//h1[contains(text(),'Design your New Improved Digital Signage in Minutes')]")}
get intercomMessengerIframe(){return $("//iframe[@title='Intercom live chat']")}
get intercomMesTxt(){return $("//span[contains(text(),'Send us a message')]")}
get intercomBtnSvg(){return $("(//*[name()='svg'][@focusable='false'])[2]")}
get closeintercom(){return $("//div[@class='intercom-1f2urc1 e4nbtsn3']")}
get intcMsgr(){return $("//div[@aria-label='Open Intercom Messenger']//div[1]")}
get frame(){return $("#intercom-frame")}
get intercomBtn(){return $("//iframe[@title='Intercom live chat']")}
get mandoeLogo(){return $("//div[@class='siteHeader_logoWrap__tymZ3']/a/svg")}
get talkToSalesBtn(){return $("//a[@href='https://mandoemedia.com/contact/sales/']")}
get productsLnk(){return $("//button[@class='desktopNavigation_headerText__bZrI_']")}
// get sanboxUrlBtn(){return $(".fl-button[href='https://sandbox.mandoemedia.com/sandbox?template=R2FsbGVyeTovL2dhbGxlcnkvUHVibGljL1RlbXBsYXRlcy9MYW5kc2NhcGUvSG9zcGl0YWxpdHlfQ2FmZS9Ib3NwaXRhbGl0eV9DYWZlXzAxNS50ZW1wbGF0ZQ%3D%3D']")}
//=============================Home page==================================================================
// get googleRatingTxt(){return $("//div[@class='pp-rating-title mobile-centered']")}
// get driveFootTxt(){return $("//strong[normalize-space()='Drive foot traffic']")}
// get dailySalesSection(){return $("//div[@id='section-daily-sales']")}
// get gaov(){return $("//img[@id='reduce-marketing-costs']")}
get getStartedTdy(){return $("(//*[name()='svg'][@class='siteFooter_svgBlackMask__6LPbq'])")}
get talktoSalesFooterBtn(){return $("//a[@href='/contact/sales/'][normalize-space()='Talk to Us']")}
//====================================Features Page ====================================================
get featuresScroll2(){return $("(//div)[90]")}
get featuresScroll3(){return $("(//div)[102]")}
get featuresScroll4(){return $("(//div)[116]")}
get featuresScroll5(){return $("(//div)[135]")}
get featuresScroll6(){return $("(//div)[157]")}
get featuresScroll7(){return $("(//div)[205]")}
get featuresScroll8(){return $("//p[contains(text(),'See what content played at what times and match it')]")}
get featuresScroll9(){return $("(//div)[226]")}
get featuresScroll10(){return $("//div[@class='pp-rating-title']")}
get featuresScroll11(){return $("//img[@title='Mandoe makes digital Signage Simple']")}
//============================================How it works Page,Hardware and Player software pages ============================================
get howItworksScroll2(){return $("(//a[@role='button'])[4]")}//step1
get howItworksScroll3(){return $("//p[normalize-space()='Step 1']")}//step1
get howItworksScroll4(){return $("//p[normalize-space()='Step 2']")}//step2
get howItworksScroll5(){return $("(//div)[176]")}//step3
get howItworksScroll6(){return $("(//div)[201]")}//step4
get howItworksScroll7(){return $("(//div)[239]")}
get howItworksScroll8(){return $("(//img[@title='Mandoe makes digital Signage Simple']")}
get hardwareScroll2(){return $("(//p)[2]")}
get hardwareScroll3(){return $("(//img[@title='connect power'])[1]")}
get hardwareScroll4(){return $("//img[@title='connect HDMI']")}
get hardwareScroll5(){return $("(//img[@title='step 3'])[1]")}
get hardwareScroll6(){return $("//img[@title='separator']")}
get hardwareScroll7(){return $("(//div)[223]")}
get hardwareScroll8(){return $("(//div)[248]")}
get hardwareScroll9(){return $("(//div)[279]")}
get playerSoftScroll2(){return $("(//div)[95]")}
get playerSoftScroll3(){return $("//span[normalize-space()='Linux Desktop Player']")}
get playerSoftScroll4(){return $("//p[contains(text(),'Take Mandoe for a test drive to see how easy it is')]")}
//============================================ Industries2 Page ==============================================
get industries2Scroll2(){return $("(//div)[256]")}//hospitality section
get industries2Scroll3(){return $("//h3[normalize-space()='Clubs']")}//freshfood section
get industries2Scroll4(){return $("(//div)[321]")}//fitness section
get industries2Scroll5(){return $("(//div)[351]")}//health section
get industries2Scroll6(){return $("(//div)[381]")}//medical section
get industries2Scroll7(){return $("(//div)[411]")}//hairnbeauty section
get industries2Scroll8(){return $("(//div)[441]")}//retail section
get industries2Scroll9(){return $("(//div)[471]")}//corporateHR section
get industries2Scroll10(){return $("(//div)[501]")}//realestate section
get industries2Scroll11(){return $("(//div)[557]")}
//==========================================================================================================================
get featuresLnk(){return $("//a[@href='/features/']")}
get templatesLnk(){return $("//button[@class='desktopNavigation_headerText__bZrI_']")}
get signtypesLnk(){return $("(//button[@class='desktopNavigation_headerText__bZrI_'])[2]")}
get pricingPageLnk(){return $("//a[normalize-space()='Pricing']")}
get pricingTxt(){return $("//strong[contains(text(),'Whatβs included?')]")}
get templatesLnk(){return $("//button[@class='desktopNavigation_headerText__bZrI_']")}
get scrollTotempTxt(){return $("//span[normalize-space()='Digital Signage Templates']")}
get howItworksLnk(){return $("//a[normalize-space()='How it Works']")}
get startFreetrialTxt(){return $("(//a[@role='button'])[4]")}
get industriesLnk(){return $("//ul[@class='corporal']//a[contains(text(),'Industries')]")}
get hardwareLnk(){return $("//a[normalize-space()='Hardware']")}
get playerSoftwareLnk(){return $("//a[normalize-space()='Player Software']")}
//=========================================Soultions Page Hospitality=========================================================
get Scroll2(){return $("(//div)[103]")}
get Scroll3(){return $("(//div)[124]")}
get Scroll4(){return $("(//div)[129]")}
get Scroll5(){return $("(//div)[158]")}
get Scroll6(){return $("(//div)[171]")}
get Scroll7(){return $("(//div)[208]")}
get Scroll8(){return $("(//div)[236]")}
get Scroll9(){return $("(//div)[264]")}
get Scroll10(){return $("(//div)[708]")}
get Scroll11(){return $("(//div)[726]")}
get Scroll12(){return $("(//div)[756]")}//medical , fitness
get hospitalityScroll13(){return $("//span[normalize-space()='Benefits of digital signage for hospitality venues']")}
get Scroll14(){return $("//h2[normalize-space()='What our customers say']")}//fitness, medical
get Scroll15(){return $("(//div[contains(text(),'350+ 5-star reviews on Google')])[2]")}
get Scroll16(){return $("(//div)[1049]")}
get Scroll17(){return $("(//div)[1060]")}
//=============================================Retail===================================
get retailScroll10(){return $("(//div)[668]")}
get retailScroll11(){return $("(//div)[686]")}
get retailScroll12(){return $("(//div)[706]")}
get retailScroll13(){return $("//span[normalize-space()='Benefits of digital signage for gift stores']")}
get retailScroll14(){return $("(//div)[786]")}
get retailScroll15(){return $("(//div[contains(text(),'350+ 5-star reviews on Google')])[2]")}
get retailScroll16(){return $("//h2[@itemprop='headline']//a[@title='Books']")}
get retailScroll17(){return $("//p[contains(text(),'Take Mandoe for a test drive to see how easy it is')]")}
//======================================================Hair and Beauty==============================================================
get hairnBeautyScroll9(){return $("(//strong[normalize-space()='Landscape'])[1]")}
get hairnBeautyScroll10(){return $("(//div)[678]")}
get hairnBeautyScroll11(){return $("(//div)[696]")}
get hairnBeautyScroll12(){return $("(//div)[716]")}
get hairnBeautyScroll13(){return $("//span[normalize-space()='Benefits of digital signage for Hair Salons']")}
get hairnBeautyScroll14(){return $("(//div)[796]")}
get hairnBeautyScroll15(){return $("(//div)[874]")}
get hairnBeautyScroll16(){return $("//h2[@itemprop='headline']//a[@title='Doctor']")}
//=========================================================Medical===========================================
get medicalScroll10(){return $("(//div)[718]")}//fitness
get medicalScroll11(){return $("(//div)[736]")}//fitness
get medicalScroll13(){return $("//span[normalize-space()='Benefits of digital signage for Pharmacies']")}
get medicalScroll15(){return $("(//div)[920]")}//fitness
get medicalScroll16(){return $("//h2[@itemprop='headline']//a[@title='Clinics']")}
get fitnessScroll13(){return $("//span[normalize-space()='Benefits of digital signage for gyms']")}////fitness
get sallyImg(){return $("(//div)[848]")}//medical
//======================================================Digital Menu Boards ================================================
get digitalMenuBoardsScroll2(){return $("(//div)[109]")}
get digitalMenuBoardsScroll3(){return $("(//div)[133]")}
get digitalMenuBoardsScroll4(){return $("(//div)[166]")}
get digitalMenuBoardsScroll5(){return $("(//div)[195]")}
get digitalMenuBoardsScroll6(){return $("//img[@alt='digital menuboard analytics']")}
get digitalMenuBoardsScroll7(){return $("(//div)[263]")}
get digitalMenuBoardsScroll8(){return $("(//h3)[8]")}
get digitalMenuBoardsScroll9(){return $("(//p)[12]")}
get digitalMenuBoardsScroll10(){return $("(//div)[825]")}
//========================================Window Signage=================================================
get windowSignageScroll6(){return $("//img[@title='Crust - reporting']")}
get windowSignageScroll09(){return $("(//h2)[6]")}
get windowSignageScroll10(){return $("(//p)[14]")}
get windowSignageScroll11(){return $("(//div)[850]")}
//=========================================In-store Signage======================================
get instoreSignageScroll6(){return $("//img[@title='digital menuboard analytics']")}
//=============================================Enterprise ============================================
get enterpriseScroll2(){return $("(//p)[4]")}
get enterpriseScroll3(){return $("(//p)[13]")}
get enterpriseScroll4(){return $("(//p)[17]")}
get enterpriseScroll5(){return $("(//div)[143]")}
get enterpriseScroll6(){return $("(//div)[172]")}
get enterpriseScroll7(){return $("(//div)[203]")}
get enterpriseScroll8(){return $("(//p)[31]")}
get enterpriseScroll9(){return $("(//div)[285]")}
get enterpriseScroll10(){return $("(//div)[321]")}
get enterpriseScroll11(){return $("(//img)[51]")}
get enterpriseScroll12(){return $("(//div)[346]")}
get enterpriseScroll13(){return $("//input[@value='Talk to Us']")}
get enterpriseScroll14(){return $("(//p)[37]")}
//=======================================templates page =============================================
get tempScroll2(){return $("(//div)[131]")}
get tempScroll3(){return $("(//div)[352]")}
get tempScroll4(){return $("(//div)[592]")}
get tempScroll5(){return $("(//div)[813]")}
get tempScroll6(){return $("(//div)[1053]")}
get tempScroll7(){return $("(//div)[1274]")}
get tempScroll8(){return $("(//div)[1514]")}
get tempScroll9(){return $("(//div)[1735]")}
get tempScroll10(){return $("(//div)[1975]")}
get tempScroll11(){return $("(//div)[2196]")}
get tempScroll12(){return $("(//div)[2436]")}
get tempScroll13(){return $("(//span[contains(text(),'Portrait')])[6]")}
get tempScroll14(){return $("//span[normalize-space()='Retail']")}
get tempScroll15(){return $("(//span[contains(text(),'Portrait')])[7]")}
get tempScroll16(){return $("(//span[normalize-space()='Real Estate'])[1]")}
get tempScroll17(){return $("(//span[contains(text(),'Portrait')])[8]")}
get tempScroll18(){return $("(//p[contains(text(),'Create beautiful digitals signs and display them i')])[1]")}
//=======================================templates category page- Hospitality =============================================
get tempHospScroll2(){return $("(//h2)[1]")}
get tempHospScroll3(){return $("(//h3)[2]")}
get tempHospScroll4(){return $("(//h2)[2]")}
get tempHospScroll5(){return $("(//h3)[4]")}
get tempHospScroll6(){return $("(//h2)[3]")}
get tempHospScroll7(){return $("(//h3)[6]")}
get tempHospScroll8(){return $("(//h2)[4]")}
get tempHospScroll9(){return $("(//h3)[8]")}
get tempHospScroll10(){return $("(//h2)[5]")}
get tempHospScroll11(){return $("(//h3)[10]")}
get tempHospScroll12(){return $("(//h2)[6]")}
get tempHospScroll13(){return $("(//p)[3]")}
//=======================================templates category page- Freshfood =============================================
get tempFreshfoodScroll2(){return $("(//h2)[1]")}
get tempFreshfoodScroll3(){return $("(//h3)[2]")}
get tempFreshfoodScroll4(){return $("(//h2)[2]")}
get tempFreshfoodScroll5(){return $("(//h3)[4]")}
get tempFreshfoodScroll6(){return $("(//h2)[3]")}
get tempFreshfoodScroll7(){return $("(//h3)[6]")}
get tempFreshfoodScroll8(){return $("(//h2)[4]")}
get tempFreshfoodScroll9(){return $("(//h3)[8]")}
get tempFreshfoodScroll10(){return $("(//h2)[5]")}
get tempFreshfoodScroll11(){return $("(//h3)[10]")}
get tempFreshfoodScroll12(){return $("(//h2)[6]")}
get tempFreshfoodScroll13(){return $("(//p)[3]")}
//=======================================templates category page- fitness =============================================
get tempfitnessScroll2(){return $("(//h2)[1]")}
get tempfitnessScroll3(){return $("(//h3)[2]")}
get tempfitnessScroll4(){return $("(//h2)[2]")}
get tempfitnessScroll5(){return $("(//h3)[4]")}
get tempfitnessScroll6(){return $("(//h2)[3]")}
get tempfitnessScroll7(){return $("(//h3)[6]")}
get tempfitnessScroll8(){return $("(//h2)[4]")}
get tempfitnessScroll9(){return $("(//h3)[8]")}
get tempfitnessScroll10(){return $("(//h2)[5]")}
get tempfitnessScroll11(){return $("(//h3)[10]")}
get tempfitnessScroll12(){return $("(//h2)[6]")}
get tempfitnessScroll13(){return $("(//p)[3]")}
//=======================================templates category page- health =============================================
get temphealthScroll2(){return $("(//h2)[1]")}
get temphealthScroll3(){return $("(//h3)[2]")}
get temphealthScroll4(){return $("(//h2)[2]")}
get temphealthScroll5(){return $("(//h3)[4]")}
get temphealthScroll6(){return $("(//h2)[3]")}
get temphealthScroll7(){return $("(//h3)[6]")}
get temphealthScroll8(){return $("(//h2)[4]")}
get temphealthScroll9(){return $("(//h3)[8]")}
get temphealthScroll10(){return $("(//h2)[5]")}
get temphealthScroll11(){return $("(//h2)[6]")}
//=======================================templates category page- medical =============================================
get tempmedicalScroll2(){return $("(//h2)[1]")}
get tempmedicalScroll3(){return $("(//h3)[2]")}
get tempmedicalScroll4(){return $("(//h2)[2]")}
get tempmedicalScroll5(){return $("(//h3)[4]")}
get tempmedicalScroll6(){return $("(//h2)[3]")}
get tempmedicalScroll7(){return $("(//h3)[6]")}
get tempmedicalScroll8(){return $("(//h2)[4]")}
get tempmedicalScroll9(){return $("(//h3)[8]")}
get tempmedicalScroll10(){return $("(//h2)[5]")}
get tempmedicalScroll11(){return $("//img[@title='Mandoe makes digital Signage Simple']")}
//=======================================templates category page- Financial =============================================
get tempFinancialScroll2(){return $("(//h2)[1]")}
get tempFinancialScroll3(){return $("(//h3)[2]")}
get tempFinancialScroll4(){return $("(//h2)[2]")}
get tempFinancialScroll5(){return $("//img[@title='Mandoe makes digital Signage Simple']")}
//====================================== page- swimartBlog =============================================
get swimartBlogScroll2(){return $("//img[@alt='Installed at over 70 sites']")}
get swimartBlogScroll3(){return $("(//p)[5]")}
get swimartBlogScroll4(){return $("(//h2)[3]")}
get swimartBlogScroll5(){return $("(//p)[13]")}
get swimartBlogScroll6(){return $("//img[@alt='Swimart quote 1']")}
get swimartBlogScroll7(){return $("(//p)[14]")}
get swimartBlogScroll8(){return $("(//p)[19]")}
get swimartBlogScroll9(){return $("(//p)[20]")}
get swimartBlogScroll10(){return $("//img[@alt='Swimart quote 2']")}
get swimartBlogScroll11(){return $("(//img[@alt='Swimart chooses Mandoe for digital signage'])[3]")}
get swimartBlogScroll12(){return $("(//div)[127]")}
get swimartBlogScroll13(){return $("(//div)[193]")}
get footerScroll(){return $("//img[@title='Mandoe makes digital Signage Simple']")}
//====================================== page- foodBlog =============================================
get foodBlogScroll2(){return $("(//p)[5]")}
get foodBlogScroll3(){return $("(//p)[6]")}
get foodBlogScroll4(){return $("(//p)[7]")}
get foodBlogScroll5(){return $("(//p)[8]")}
get foodBlogScroll6(){return $("(//p)[9]")}
get foodBlogScroll7(){return $("(//div)[173]")}
get foodBlogScroll8(){return $("(//div)[250]")}
//====================================== page- Blog- How to increase your foot traffic and boost your sales =============================================
get TrafficBlogScroll2(){return $("(//p)[5]")}
get TrafficBlogScroll3(){return $("(//p)[6]")}
get TrafficBlogScroll4(){return $("(//img[@alt='How to increase foot traffic to your store and boost sales'])[1]")}
get TrafficBlogScroll5(){return $("(//h3)[2]")}
get TrafficBlogScroll6(){return $("(//h3)[4]")}
get TrafficBlogScroll7(){return $("(//h3)[5]")}
get TrafficBlogScroll8(){return $("(//div)[110]")}
get TrafficBlogScroll9(){return $("(//h2)[2]")}
get TrafficBlogScroll10(){return $("//a[@title='Modern cafe design ideas']")}
get TrafficBlogScroll11(){return $("(//div)[296]")}
get TrafficBlogScroll12(){return $("(//div)[327]")}
//=======================================templates category page- Liquor promotional template =============================================
get tempLiquorScroll2(){return $("(//div)[113]")}
get tempLiquorScroll3(){return $("(//h3)[1]")}
get tempLiquorScroll4(){return $("(//h3)[2]")}
get tempLiquorScroll5(){return $("(//h2)[3]")}
get tempLiquorScroll6(){return $("(//p)[16]")}
//=======================================templates category page- Real-estate =============================================
get tempRealestateScroll2(){return $("(//h2)[1]")}
get tempRealestateScroll3(){return $("(//h3)[2]")}
get tempRealestateScroll4(){return $("(//h2)[2]")}
get tempRealestateScroll5(){return $("(//h3)[4]")}
get tempRealestateScroll6(){return $("(//h2)[3]")}
get tempRealestateScroll7(){return $("//img[@title='Mandoe makes digital Signage Simple']")}
//=======================================templates category page-Hair and beauty =============================================
get tempbeautyScroll2(){return $("(//h2)[1]")}
get tempbeautyScroll3(){return $("(//h3)[2]")}
get tempbeautyScroll4(){return $("(//h2)[2]")}
get tempbeautyScroll5(){return $("(//h3)[4]")}
get tempbeautyScroll6(){return $("(//h2)[3]")}
get tempbeautyScroll7(){return $("(//h3)[6]")}
get tempbeautyScroll8(){return $("(//h2)[4]")}
get tempbeautyScroll9(){return $("(//h3)[8]")}
get tempbeautyScroll10(){return $("(//h2)[5]")}
get tempbeautyScroll11(){return $("(//h3)[10]")}
get tempbeautyScroll12(){return $("(//h2)[6]")}
get tempbeautyScroll13(){return $("(//h3)[12]")}
get tempbeautyScroll14(){return $("(//h2)[7]")}
get tempbeautyScroll15(){return $("(//p)[3]")}
//=======================================templates category page Retail =============================================
get tempRetailScroll2(){return $("(//h2)[1]")}
get tempRetailScroll3(){return $("(//h3)[2]")}
get tempRetailScroll4(){return $("(//h2)[2]")}
get tempRetailScroll5(){return $("(//h3)[4]")}
get tempRetailScroll6(){return $("(//h2)[3]")}
get tempRetailScroll7(){return $("(//h3)[6]")}
get tempRetailScroll8(){return $("(//h2)[4]")}
get tempRetailScroll9(){return $("(//h3)[8]")}
get tempRetailScroll10(){return $("(//h2)[5]")}
get tempRetailScroll11(){return $("(//h3)[10]")}
get tempRetailScroll12(){return $("(//h2)[6]")}
get tempRetailScroll13(){return $("(//h3)[12]")}
get tempRetailScroll14(){return $("(//h2)[7]")}
get tempRetailScroll15(){return $("(//h3)[14]")}
get tempRetailScroll16(){return $("(//h2)[8]")}
get tempRetailScroll17(){return $("(//h3)[16]")}
get tempRetailScroll18(){return $("(//h2)[9]")}
get tempRetailScroll19(){return $("(//h3)[18]")}
get tempRetailScroll20(){return $("(//h2)[10]")}
get tempRetailScroll21(){return $("(//p)[3]")}
//========================================Pricing page ==============================================================================================================
get pricingScroll2(){return $("(//div)[161]")}
get pricingScroll3(){return $("(//div)[173]")}
get pricingScroll4(){return $("(//div)[198]")}
//========================================About us page ==============================================================================================================
get aboutScroll2(){return $("(//div)[79]")}
get aboutScroll3(){return $("(//div)[104]")}
get aboutScroll4(){return $("(//h2)[2]")}
get aboutScroll5(){return $("(//h2)[3]")}
get aboutScroll6(){return $("//img[@title='life-at-mandoe']")}
get aboutScroll7(){return $("(//div)[154]")}
get aboutScroll8(){return $("(//div)[184]")}
//-================================ Blog page ============================================================================================================
get blogScroll2(){return $("(//h2)[1]")}
get blogScroll3(){return $("(//h2)[2]")}
get blogScroll4(){return $("(//h2)[14]")}
get blogScroll5(){return $("//a[@title='Case Studies']//span")}
get blogScroll6(){return $("//a[@title='News and Updates']//span")}
get blogScroll7(){return $("//a[@title='Design Inspiration']//span")}
get blogScroll8(){return $("//p[contains(text(),'Create beautiful digitals signs and display them i')]")}
//-================================ Case Studies ============================================================================================================
get caseStudiesScroll2(){return $("(//div)[103]")}
get caseStudiesScroll3(){return $("(//div)[203]")}
get caseStudiesScroll4(){return $("(//div)[269]")}
get caseStudiesScroll5(){return $("(//p)[7]")}
//===================================Customers=================================================================================
get customersScroll2(){return $("(//div)[82]")}
get customersScroll3(){return $("(//div)[159]")}
get customersScroll4(){return $("(//div)[269]")}
get customersScroll5(){return $("(//div)[339]")}
//===================================== Safety Warranty regulatory guide =============================================================
get safetyWarrantyScroll2(){return $("(//p)[2]")}
get safetyWarrantyScroll3(){return $("(//p)[23]")}
get safetyWarrantyScroll4(){return $("(//strong)[6]")}
get safetyWarrantyScroll5(){return $("(//p)[43]")}
get safetyWarrantyScroll6(){return $("(//strong)[11]")}
get safetyWarrantyScroll7(){return $("(//strong)[12]")}
get safetyWarrantyScroll8(){return $("(//p)[66]")}
//==============================================Contact/Sales page ========================================================================
get contactSalesScroll2(){return $("//p[contains(text(),'Enter your details below and a member of our team ')]")}
get contactSalesScroll3(){return $("//label[@for='input_4_16']")}
get contactSalesScroll4(){return $("//input[@value='TALK TO US']")}
//==========================================================Partner-Program==========================================================
get partnerProgramScroll2(){return $("(//div)[88]")}
get partnerProgramScroll3(){return $("(//div)[112]")}
get partnerProgramScroll4(){return $("(//div)[136]")}
get partnerProgramScroll5(){return $("(//li)[36]")}
get partnerProgramScroll6(){return $("//label[@for='input_19_3']")}
get partnerProgramScroll7(){return $("//input[@value='Talk to Us']")}
get partnerProgramScroll8(){return $("(//div)[197]")}
//=====================================================Terms of use ===================================================================
get termsOfuseScroll2(){return $("(//h3)[1]")}
get termsOfuseScroll3(){return $("(//h3)[5]")}
get termsOfuseScroll4(){return $("(//h3)[7]")}
get termsOfuseScroll5(){return $("(//h3)[10]")}
get termsOfuseScroll6(){return $("(//p)[68]")}
get termsOfuseScroll7(){return $("(//li)[33]")}
get termsOfuseScroll8(){return $("(//h3)[15]")}
get termsOfuseScroll9(){return $("(//p)[102]")}
get termsOfuseScroll10(){return $("(//li)[46]")}
get termsOfuseScroll11(){return $("(//a[@href='#next'])[4]")}
get termsOfuseScroll12(){return $("(//div)[139]")}
//=====================================================Locations ===================================================================
get locationsScroll2(){return $("(//div)[96]")}
get locationsScroll3(){return $("(//div)[138]")}
get locationsScroll4(){return $("(//div)[180]")}
get locationsScroll5(){return $("(//div)[222]")}
get locationsScroll6(){return $("(//div)[264]")}
get locationsScroll7(){return $("(//div)[306]")}
get locationsScroll8(){return $("(//div)[348]")}
get locationsScroll9(){return $("(//h3)[43]")}
get locationsScroll10(){return $("(//h3)[49]")}
get locationsScroll11(){return $("(//h3)[55]")}
get locationsScroll12(){return $("(//h3)[61]")}
get locationsScroll13(){return $("(//h3)[67]")}
get locationsScroll14(){return $("(//h3)[73]")}
get locationsScroll15(){return $("(//h3)[79]")}
get locationsScroll16(){return $("(//h3)[85]")}
get locationsScroll17(){return $("(//h3)[91]")}
get locationsScroll18(){return $("(//h3)[97]")}
get locationsScroll19(){return $("(//h3)[103]")}
get locationsScroll20(){return $("(//h3)[109]")}
get locationsScroll21(){return $("(//h3)[117]")}
get locationsScroll22(){return $("(//h3)[123]")}
get locationsScroll23(){return $("(//h3)[129]")}
get locationsScroll24(){return $("(//h3)[135]")}
get locationsScroll25(){return $("(//h3)[141]")}
get locationsScroll26(){return $("(//h3)[147]")}
get locationsScroll27(){return $("(//h3)[153]")}
get locationsScroll28(){return $("(//h3)[159]")}
get locationsScroll29(){return $("(//h3)[165]")}
get locationsScroll30(){return $("(//h3)[171]")}
get locationClick1(){return $("//a[normalize-space()='Norwich']")}
get locationClick2(){return $("//a[normalize-space()='Preston']")}
//=====================================================Privacy Policy ===================================================================
get privacyPolicyScroll2(){return $("(//h3)[1]")}
get privacyPolicyScroll3(){return $("(//p)[26]")}
get privacyPolicyScroll4(){return $("(//p)[34]")}
get privacyPolicyScroll5(){return $("(//p)[42]")}
get privacyPolicyScroll6(){return $("(//h3)[6]")}
get privacyPolicyScroll7(){return $("(//p)[58]")}
get privacyPolicyScroll8(){return $("(//p)[76]")}
get privacyPolicyScroll9(){return $("(//h3)[14]")}
get privacyPolicyScroll10(){return $("(//div)[154]")}
//=====================================================Info ===================================================================
get infoScroll2(){return $("(//div)[94]")}
get infoScroll3(){return $("(//div)[103]")}
//=========================================================Support================================================================
get supportScroll2(){return $("//p[contains(text(),'Enter your details below and a member of our team ')]")}
get supportScroll3(){return $("//label[@for='input_17_13']")}
get supportScroll4(){return $("(//div)[123]")}
//=================================================== legal ==================================================================
get legalScroll2(){return $("(//p)[6]")}
//=================================================== Thanks ==================================================================
get thanksScroll2(){return $("(//div)[101]")}
get thanksScroll3(){return $("//img[@title='Mandoe makes digital Signage Simple']")}
//=====================================================trialForm ===================================================================
get trialFormScroll2(){return $("(//h1)[1]")}
//=====================================================Reseller Program ===================================================================
get resellerProgramScroll2(){return $("//a[@href='#join']")}
get resellerProgramScroll3(){return $("//label[@for='input_21_10']")}
get resellerProgramScroll4(){return $("(//select)[1]")}
get resellerProgramScroll5(){return $("//input[@value='Register your interest']")}
get hospitalityLnk(){return $("//a[@href='/industries/hospitality/']")}
get talkSalesBtn(){return $("(//a[@role='button'])[4]")}
get retailLnk(){return $("//a[@href='/industries/gift-store/']")}
get hairnBeautyLnk(){return $("//a[@href='/industries/hair-salon/']")}
get medicalLnk(){return $("//a[@href='/industries/pharmacy/']")}
get fitnessLnk(){return $("//a[@href='/industries/gym/']")}
get moreLnk(){return $("//a[normalize-space()='More']")}
get digMenuBoardsLnk(){return $("//a[normalize-space()='Digital Menu Boards']")}
get digMenuBoardTxt(){return $("(//span[contains(text(),'Talk to Sales')])[2]")}
get windowSignageLnk(){return $("//a[normalize-space()='Window Signage']")}
get instoreSignageLnk(){return $("//a[normalize-space()='In-Store Signage']")}
get enterpriseLnk(){return $("//a[@href='/enterprise/']")}
get customersLnk(){return $("//a[@href='/customers/']")}
get partnerProgramLnk(){return $("//a[@href='/partner-program/']")}
get partnerProgramTxt(){return $("//span[normalize-space()='Join the Partner Program']")}
//============================================Resources Page ===========================================================
get blogLnk(){return $("//a[@href='/blog/']")}
get sliderSvg(){return $("(//*[name()='svg'][@role='img'])[1]")}
get caseStudiesLnk(){return $("//a[@href='/blog/topic/case-studies/']")}
get caseStudiesTxt(){return $("//a[@class='case-studies']")}
get helpCentreLnk(){return $("(//a[@href='https://help.mandoemedia.com'])[1]")}
get aboutLnk(){return $("//a[normalize-space()='About']")}
get contactLnk(){return $("//a[normalize-space()='Contact']")}
get supportLnk(){return $("//a[normalize-space()='Support']")}
//============================================Help Centre ===========================================================
get helpCentreScroll2(){return $("(//h3)[1]")}
//===============================================Buttons-home===================================================
get topNavStartFreeTrialBtn(){return $("(//a[@role='button'])[3]")}
get homeSFT02(){return $("(//a[@role='button'][normalize-space()='Start Free Trial'])[3]")}
get AUhomeSFT02(){return $("(//a[contains(text(),'Talk to a Specialist')])[1]")}
get scrollToSvg(){return $("(//h2)[3]")}
get homeSFT03(){return $("(//a[@role='button'][normalize-space()='Start Free Trial'])[4]")}
get AUhomeSFT03(){return $("//a[normalize-space()='Speak to a Specialist']")}
get homeMVF01(){return $("(//a[@role='button'])[5]")}
get homeMVF02(){return $("(//a[@role='button'])[7]")}
//==========features
get featuresSFT01(){return $("(//a[@role='button'])[4]")}
get featuresMVF01(){return $("(//a[@role='button'])[5]")}
get featuresMVF02(){return $("(//a[@role='button'])[7]")}
get scrollfeaturesfooter(){return $("//span[normalize-space()='Get Started Today!']")}
get howItworksGetSFF01(){return $("(//a[@role='button'])[4]")}
get scrollsignupandcreate(){return $("(//div)[143]")}
get howItworksSignupFF01(){return $("(//a[@role='button'])[5]")}
get scrollconnectyrdisplay(){return $("(//div)[189]")}
get howItworksSignupFF02(){return $("(//a[@role='button'])[6]")}
get scrollGetSFFtxt(){return $("(//h2)[5]")}
get howItworksFooterGetSF(){return $("(//a[@role='button'])[7]")}
//===============Template================================================
get scrolltempfooterGetSFFtxt(){return $("(//h2)[9]")}
get templatesFooterGetSF(){return $("(//a[@href='https://sandbox.mandoemedia.com/sandbox-wizard'])[1]")}
//========template category Hospitality================
get hospStartY14DFT(){return $("(//a[@role='button'])[4]")}
//==========================Industries - 1 button on the footwe=========================================
get scrollindustriesfooterGetSFFtxt(){return $("(//h2)[10]")}
get templatesFooterGetSF(){return $("(//a[@href='https://sandbox.mandoemedia.com/sandbox-wizard'])[1]")}
//============================Player Hardware/ coonecting the player- 3 buttons =========================================
get buyMediaPlayerBtn(){return $("(//span[normalize-space()='Buy Media Player'])[1]")}
get activatePlayerBtn(){return $("(//a[@role='button'])[5]")}
get scrollpHwfootGetSFFtxt(){return $("(//div)[233]")}
get playerHWGSFBtn(){return $("(//a[@role='button'])[6]")}
//=======================Player software / download player 02 buttons on the footer==============================
get scrollpSwfootGetStodaytxt(){return $("(//h2)[1]")}
get PlayerSWStartFTBtn(){return $("(//a[@role='button'])[7]")}
get PlayerSWMVFBtn(){return $("(//a[@href='https://sandbox.mandoemedia.com/sandbox-wizard'])[1]")}
//=====================Soultions- Hospitality
get HospitalitySFTBtn(){return $("(//a[@role='button'])[4]")}
get HospitalityMakeaDigSign(){return $("(//a[@role='button'])[5]")}
//=====portrait templates div to get the middle image bar
get scrollHospGSTdiv(){return $("(//div)[466]")}
get HospitalitySFTBtn02(){return $("(//a[@role='button'])[6]")}
get scrollHospFooterGSTtxt(){return $("(//h2)[15]")}
get HospitalitySFTBtn03(){return $("(//a[@role='button'])[7]")}
get HospitalityfooterMVIF(){return $("(//a[@role='button'])[8]")}
//================================== Use cases - Digital menuboard
get DigMBSFTBtn01(){return $("(//a[@role='button'])[4]")}
get DigMBmakeaDM(){return $("(//a[@role='button'])[5]")}
get scrollDigMBimg(){return $("(//div)[246]")}
get DigMBSFTBtn02(){return $("(//a[@role='button'])[6]")}
get scrollDigMBFooterGSTtxt(){return $("(//h2)[7]")}
get DigMBSFTBtn03(){return $("(//a[@role='button'])[7]")}
get DigMBfooterMVIF(){return $("(//a[@role='button'])[8]")}
//===============================Solutions Enterprise
get EntConOurTeam(){return $("(//a[@role='button'])[4]")}
get scrollEntFooterSTOT(){return $("(//h2[normalize-space()='Speak to our team today'])[1]")}
get EntConUs(){return $("(//a[@role='button'])[5]")}
//===============================Solutions Customers
get CustomerSFT01(){return $("(//div)[86]")}
get CustomerMVIF01(){return $("(//a[@role='button'])[5]")}
get scrollCusFooterGST(){return $("(//h2)[1]")}
get CustomerSFT02(){return $("(//a[@role='button'])[6]")}
get CustomerMVIF02(){return $("(//a[@role='button'])[7]")}
//==========================Blog
get scrollBlogSFT01(){return $("(//div)[464]")}
get BlogSFT01(){return $("(//a[@role='button'])[4]")}
get scrollBlogfooterGSFF(){return $("(//h2)[19]")}
get BlogfooterGSF(){return $("(//a[@href='https://sandbox.mandoemedia.com/sandbox-wizard'])[1]")}
//=========Food sustainability
get BlogFoodMVIF(){return $("(//a[@role='button'])[4]")}
get scrollBlogFoodGS(){return $("(//div)[118]")}
get BlogFoodGS(){return $("(//a[@role='button'])[5]")}
get scrollBlogFoodGSF(){return $("(//h2)[6]")}
get BlogFoodGSF(){return $("(//a[@role='button'])[6]")}
//============Case studies
get CStudiesGS(){return $("(//a[@role='button'])[4]")}
get scrollCStudiesGSF(){return $("(//h2)[3]")}
get CStudiesGSF(){return $("(//a[@role='button'])[5]")}
//==============Soft ware only pricing
get scrollSWOPS14DFT(){return $("//p[contains(text(),'Good for businesses with basic requirements who on')]")}
get SWOP14DFTleft(){return $("(//a[@role='button'])[5]")}
get SWOP14DFTright(){return $("(//a[@role='button'])[7]")}
get scrollSWOPfooterGSF(){return $("(//h2)[1]")}
get SWOPGSF(){return $("(//a[@role='button'])[8]")}
//=============about
get scrollAboutfooter(){return $("(//h2)[4]")}
get aboutSFT(){return $("(//a[@role='button'])[4]")}
get aboutMVIF(){return $("(//a[@href='https://sandbox.mandoemedia.com/sandbox-wizard'])[1]")}
open () {
return super.open('/');
}
}
module.exports = new HomePage();
/pageobjects/page.js
:
/**
* main page object containing all methods, selectors and functionality
* that is shared across all page objects
*/
module.exports = class Page {
/**
* Opens a sub page of the page
* @param path path of the sub page (e.g. /path/to/page.html)
*/
open (path) {
return browser.url(path)
}
}
lol, I was just looking for a git project with package.json and so on π . Is that something you can do?
Woops!
New to git/github. Here it is: https://github.com/sdoigmm/mandoe-visual-testing-02/
You will need to be on a USA VPN when you run the current test.
(& UK or AUS VPN when commenting out the US test specs/uncommenting out the UK or AUS test specs in the config file)
Hmmm, try now
Sorry to bother you, just following up
@wswebcreation the repo is now non-empty
@sdoigmm
I've cloned the project and installed it on my
And I'm not getting any issues
[chrome 112.0.5615.137 mac os x #0-0] Running: chrome (v112.0.5615.137) on mac os x
[chrome 112.0.5615.137 mac os x #0-0] Session ID: 3f311eb02851c08e9f35a5ac73c0e90e
[chrome 112.0.5615.137 mac os x #0-0]
[chrome 112.0.5615.137 mac os x #0-0] Β» /test/specs/US-products.spec.js
[chrome 112.0.5615.137 mac os x #0-0] Products page
[chrome 112.0.5615.137 mac os x #0-0] β should save Products-Features page screenshotsscreenshots
[chrome 112.0.5615.137 mac os x #0-0] β should compare Products-Features page screenshots
[chrome 112.0.5615.137 mac os x #0-0] β should save Products-Templates page screenshots
[chrome 112.0.5615.137 mac os x #0-0] β should compare Products-Templates page screenshots
[chrome 112.0.5615.137 mac os x #0-0] β should save Products-how-it-works page screenshots
[chrome 112.0.5615.137 mac os x #0-0] β should compare Products-how-it-works page screenshots
[chrome 112.0.5615.137 mac os x #0-0] β should save Products-industries2 page screenshots
[chrome 112.0.5615.137 mac os x #0-0] β should compare Products-industries2 page screenshots
[chrome 112.0.5615.137 mac os x #0-0] β should save Products-ids-getting-started-guide page screenshots
[chrome 112.0.5615.137 mac os x #0-0] β should compare Products-ids-getting-started-guide page screenshots
[chrome 112.0.5615.137 mac os x #0-0] β should save Products-download-player page screenshots
[chrome 112.0.5615.137 mac os x #0-0] β should compare Products-download-player page screenshots
[chrome 112.0.5615.137 mac os x #0-0]
[chrome 112.0.5615.137 mac os x #0-0] 12 passing (4m 47.8s)
Will close this issue for now
This is our
wdio.conf.js
:This is an example of an AU test,
AU-products.page.js
:` const HomePage = require('../pageobjects/home.page');
});`
Currently, when running
npx wdio wdio.conf.js
I'm receiving errors:`[0-0] TypeError in "Products page.should compare Products-Features page screenshots" TypeError: browser.checkFullPageScreen is not a function
or
[0-0] TypeError in "Products page.should save Products-Features page screenshotsscreenshots" TypeError: browser.saveFullPageScreen is not a function at Context. (\test\specs\UK-products.spec.js:23:23)
UK-products.spec.js:23: await browser.saveFullPageScreen('UK-prod-featuresPage', { }); `
Help appreciated.