Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

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

Open
#3,094 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
docker, github-actions, javascript, node.js
Domain
ci-cd, testing-qa

Research direction

Start with workflow.yml and the WebDriver settings in test.codecept.conf.js; run the npx codeceptjs command shown and inspect the hub/chrome service startup and session-creation logs. Done means the CI @store run creates a Chrome session and completes checkout verification without the WebDriver timeout.

Written by the indexing model from the issue text.

Description

stale
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
› <TypeError: Cannot read property 'saveScreenshot' of undefined>
✖ 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:
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..

Dominant language
JavaScript
Stars
4.2k
Forks
756
Avg merge
2d 9h
Merged PRs (30d)
16

Contributor guide

Open the contributing guide

First steps

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

More from codeceptjs/CodeceptJS

All issues in codeceptjs/CodeceptJS

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.