Запись нескольких браузеров за один прогон в Cypress - PullRequest
1 голос
/ 22 апреля 2020

Я пытаюсь настроить Gitlab CI, чтобы он работал с Cypress. В общем все начинается, кипарис работает сам. Проблема появляется с Cypress Dashboard . В основном он работает - тесты записаны правильно. Единственная проблема в том, что я хочу протестировать свое приложение в двух браузерах - Chrome и Firefox. Cypress записывает оба браузера в двух отдельных запусках:

One run per one browser

Я знаю, что я не могу запустить оба из них в одно и то же время . Но я хотел использовать функциональность группировки (или что-то еще) для «слияния» runs.

Еще одна вещь, которая наводит меня на мысль, что группировка обоих браузеров может быть возможна, это фильтр в результатах теста:

Tests results

Это мое определение работы:

End-To-End:
  stage: e2e
  parallel: 2
  artifacts:
    when: on_failure
    paths:
      - dist/cypress/apps/client/my-app-web-e2e/videos/**/*.mp4
      - dist/cypress/apps/client/my-app-web-e2e/screenshots/**/*.png
    expire_in: 7 days
  script:
    - yarn e2e:ci:chrome --record --key $CYPRESS_RECORD_KEY --group "$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHA"
    - yarn e2e:ci:firefox --record --key $CYPRESS_RECORD_KEY --group "$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHA"

И package.json сценариев:

{
   "scripts": {
      "e2e:ci": "nx affected --target=e2e --runner=ci --base=remotes/origin/master --parallel --prod --headless",
      "e2e:ci:chrome": "yarn run e2e:ci --browser=chrome",
      "e2e:ci:firefox": "yarn run e2e:ci --browser=firefox"
   }
}

I Я использую $CI_COMMIT_REF_SLUG-$CI_COMMIT_SHA ключ для группировки браузеров и группы созданы, но в отдельных runs.

Я также пытался установить Run Completion Delay на cypress.io > Project > Settings > Parallelization на какое-то высокое значение, например 1200. Но это не помогло с моей проблемой.

Или в отчаянии, я попытался удалить все распараллеливание, но это работает так же ...

1 Ответ

1 голос
/ 22 апреля 2020

Я не знаю, как я это пропустил, но я только что узнал, что есть что-то вроде --ci-build-id флага, который решает мою проблему :)

variables:
  CI_ID: "$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHA"

...

End-To-End:
  stage: e2e
  parallel: 2
  artifacts:
    when: on_failure
    paths:
      - dist/cypress/apps/client/my-app-web-e2e/videos/**/*.mp4
      - dist/cypress/apps/client/my-app-web-e2e/screenshots/**/*.png
    expire_in: 7 days
  script:
    - yarn e2e:ci:chrome --record --key $CYPRESS_RECORD_KEY --group Chrome --ci-build-id $CI_ID
    - yarn e2e:ci:firefox --record --key $CYPRESS_RECORD_KEY --group Firefox --ci-build-id $CI_ID
...