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

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
25/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
docker, github-actions, javascript, node.js
Lĩnh vực
ci-cd, testing-qa

Hướng nghiên cứu

Bắt đầu với workflow.yml và các thiết lập WebDriver trong test.codecept.conf.js; chạy lệnh npx codeceptjs được hiển thị và kiểm tra các log khởi động dịch vụ hub/chrome cùng log tạo phiên. Hoàn tất nghĩa là lượt chạy CI @store tạo được một phiên Chrome và hoàn thành việc xác minh checkout mà không gặp timeout của WebDriver.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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

Ngôn ngữ chính
JavaScript
Star
4.2k
Fork
756
Merge trung bình
2 ngày 9 giờ
Pull request đã merge (30 ngày)
16

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

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

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của codeceptjs/CodeceptJS

Tất cả issue của codeceptjs/CodeceptJS

Issue tương tự

Thêm issue về JavaScript

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.