codeceptjs / codeceptjs/CodeceptJS

BDD Tests are failing due to Chrome session not being able to create on CI pipeline

Đang mở
#3,094 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
stale
Ngôn ngữ chính
JavaScript
Star
4.2k
Fork
757
Merge trung bình
2 ngày 9 giờ
Pull request đã merge (30 ngày)
16

Mô tả

#### What are you trying to achieve?

Running tests successfully on our GitHub action Runner : ubuntu-latest container. **It was working all good but broke 8 days ago (14th oct 2021)**

I tried investigating & observed both this docker images are updated on same date, but reverting them back to older version selenium/hub:: 3.141 & selenium/node-chrome:93.0 didn't helped, got same error attached below

```
hub:
image: selenium/hub:latest
chrome:
image: selenium/node-chrome:latest

```

Note : Tests run fine on local machine with same configuration running on CI pipeline.

#### What do you get instead?

Checkout page verification on Store --
[1] Starting recording promises
**Verifying checkout page - Annual, prepaid @store
[1] Error | Error: Can't connect to WebDriver.
Error: Failed to create session.
Timeout awaiting 'request' for 120000ms

Please make sure Selenium Server is running and accessible
Error: Can't connect to WebDriver.
Error: Failed to create session.
Timeout awaiting 'request' for 120000ms**

Please make sure Selenium Server is running and accessible
Given I am on test site
I am on page "/"
[1] Error | TypeError: Cannot read property 'url' of undefined
[1] Error | TypeError: Cannot read property 'url' of undefined
[1] Error | TypeError: Cannot read property 'url' of undefined
[1] Starting session
[1] Stopping recording promises
› Test failed, try to save a screenshot
› Screenshot has been saved to /__w/web-project-ui-automation-test-framework/web-project-ui-automation-test-framework/output/Verifying__d2382720-3a95-4e87-a5d9-466410c33dc3.failed.png

✖ FAILED in 14ms

> Provide test source code if related

workflow.yml

```
name: Build & Test

on:
push:
branches: [master]
pull_request:
branches: [master]

jobs:
build:
runs-on: ubuntu-latest
container:
image: node:14.4
options: --network-alias testHost
env:
NODE_ENV: test
SELENIUM_HUB_HOST: hub
TEST_HOST: testHost

services:
hub:
image: selenium/hub:latest
chrome:
image: selenium/node-chrome:latest
env:
HUB_HOST: hub
HUB_PORT: 4444

strategy:
matrix:
node-version: [14.4]

steps:
- name: Checkout
uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
registry-url: 'https://npm.pkg.github.com'
scope: '@xyz-technologies'
- name: NPM install
run: npm install
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_PAT }}
- name: Run Store Tests
run: npx codeceptjs run --grep @store --reporter mocha-multi --profile https://store.xyz.com/ --config test.codecept.conf.js
- name: Archive mochawesome Test Report
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: mochawesome-test-report
path: ./output
```

### Details

* CodeceptJS version: "3.1.2",
* NodeJS Version: 14.4
* Operating System: Linux ubuntu-latest
* puppeteer || webdriverio || testcafe version (if related) webdriverio
* Configuration file:

```js
const { setHeadlessWhen } = require('@codeceptjs/configure');
const { WAIT_FOR } = require('../constants');
const {
CheckElementPresenceHelper,
VisualTestingHelper,
RelativePathResembleHelper,
} = require('../helpers/index');

require('dotenv').config();

setHeadlessWhen(process.env.CI);

exports.config = {
output: './output',
timeout: WAIT_FOR.STEP, // applies to a single step definition, which should not take longer to run, than specified
helpers: {
CheckElementPresenceHelper,
VisualTestingHelper,
assertWrapper: {
require: require.resolve('codeceptjs-assert'),
},
WebDriver: {
browser: 'chrome',
url: process.env.profile,
coloredLogs: true,
show: true,
restart: true,
host: process.env.host || 'hub',
waitForTimeout: WAIT_FOR.ELEMENT, // wait for the element to reach the state (enabled, existing)
timeouts: {
pageLoad: WAIT_FOR.PAGE, // wait for the page loading to complete
},
smartWait: WAIT_FOR.IMPLICIT, // implicit wait set, when searching for a specific single element, is disables in all other cases (will wait for additional 5 sec)
desiredCapabilities: {
'goog:chromeOptions': {
args: [
'--disable-gpu',
'--window-size=1500,1300',
'--no-sandbox',
'--disable-extensions',
'--dns-prefetch-disable',
'--disable-dev-shm-usage',
],
},
},
},
ResembleHelper: {
require: RelativePathResembleHelper.require,
screenshotFolder: './output/',
relativeToHtmlScreenshotFolder: './',
baseFolder: './output/tests/screenshots/base/',
diffFolder: './output/tests/screenshots/diff/',
relativeToHtmlBaseFolder: './tests/screenshots/base/',
relativeToHtmlDiffFolder: './tests/screenshots/diff/',
},
Mochawesome: {
uniqueScreenshotNames: 'true',
},
},
mocha: {
reporterOptions: {
'codeceptjs-cli-reporter': {
stdout: '-',
options: {
verbose: true,
steps: true,
debug: true,
},
},
mochawesome: {
stdout: './output/console.log',
options: {
steps: true,
reportDir: './output',
json: false,
reportFilename: 'Automated_Test_Run_Report',
inlineAssets: 'true',
saveHtml: 'true',
overwrite: 'true',
},
},
},
},
bootstrap: null,
teardown: null,
hooks: [],
gherkin: {
features: './features/*.feature', // feature files location
steps: './steps/*.js', // step definitions location
},
plugins: {
screenshotOnFail: {
enabled: true, // if true take screenshot of failed scenarios
fullPageScreenshots: false,
},
retryFailedStep: {
enabled: true, // if true rerun failed tests
retries: 2,
ignoredSteps: ['compareActualAndBaseScreenshots'],
},
},
rerun: {
// run 4 times until 1st success
minSuccess: 1,
maxReruns: 2,
},
name: 'codeceptTest',
};

```

Please suggest what could be wrong..

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.