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

Abierto
#3,094 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
25/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
docker, github-actions, javascript, node.js
Área
ci-cd, testing-qa

Línea de trabajo

Comienza con workflow.yml y la configuración de WebDriver en test.codecept.conf.js; ejecuta el comando npx codeceptjs mostrado e inspecciona los registros de inicio del servicio hub/chrome y de creación de sesiones. Se considera terminado cuando la ejecución de CI @store crea una sesión de Chrome y completa la verificación del checkout sin el timeout de WebDriver.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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..

Lenguaje dominante
JavaScript
Estrellas
4.2k
Forks
756
Merge medio
2 d 9 h
PR fusionados (30 d)
16

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de codeceptjs/CodeceptJS

Todos los issues de codeceptjs/CodeceptJS

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.