マリーザ?!
テストの履歴を見るとどんだけ連続で成功したり失敗したりしてるかわかります
わかると何がいいかって、E2Eだと特にそうなんだけど、不安定ないわゆるFreakyなテストを見つけられます
以下typescript+npm+playwright+Gitlab前提
playwrightでAllureログを出すようにする
Allure用のプラグインがあるので、それで出力できる。
Installation
npm i -D @playwright/test allure-playwright
手元ならHTMLレポーターもいるだろうからplaywright.config.ts
は以下
{ reporter: [["html"], ["allure-playwright"]]; }
これで playwright test
するとallure-resultsディレクトリの生成とそんなかへの出力がされるようになる
歴史を話すと昔のPlaywrightのレポートの標準だったとか何とか。本当か怪しい。ただ公式ドキュメントでも言及されてたり充実してるのは確か。
履歴を持つAllure Reportの生成
前に生成したallure-report/history
をテスト実行時にできる allure-results
にぶち込んで allure generate
CIというかスクリプト的にはmv書き込んでおけば良い
Gitlabで利用する
上記のyamlを用法容量を守ってパクるんだけど、コロンが二つ連続してたり文法エラーあるんでそこは気をつける、気をつけた。
最近はmasterじゃなくてmainで作られるとかもあるのでそこも対応。
上のmediumにもあるけど${CI_DEPLOY_TOKEN}
は適宜Gitlabの設定→アクセストークンから作って環境変数とかに突っ込む事。Gitlabのセキュリティの問題。公開ならいらんらしいけど、公開でもあっても邪魔にならんし作っといていいんじゃないかな
stages: - test - allure - deploy .download_history: &download_history after_script: - apt-get update - apt-get upgrade -y - apt-get install -y unzip - mkdir backup && cd backup || true - "curl --location --output report.zip --request GET \"https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/jobs/artifacts/main/download?job=pages\" --header \"Authorization: Bearer ${CI_DEPLOY_TOKEN}\" || true" - (unzip report.zip) || true - cd ../ - (cp -r backup/public/history/ allure-results/history) || true .test_template: &test_template allow_failure: true stage: test image: mcr.microsoft.com/playwright:v1.40.1-jammy script: - npm install @playwright/test - npx playwright test artifacts: when: always paths: - allure-results/ reports: junit: results.xml smoke: <<: *test_template <<: *download_history allure_report: stage: allure when: always image: timbru31/java-node dependencies: - smoke script: - npm install - npx allure generate #change allure command specific to your framework artifacts: when: always paths: - allure-report/ - allure-results/ only: - main pages: stage: deploy when: always dependencies: - allure_report script: - mv allure-report/ public/ artifacts: paths: - public expire_in: 30 days only: - main
.download_historyで以前のhistoryを取得する
前回test_template
でArtifactsに保存したallure-resultsを拾う部分。拾い方の部分ドキュメント読んでないからようわからんけど雰囲気わかるはず
apt-get update
周りは過剰かもしれない、調べてない。
CI_PROJECT_ID
はGitlabが設定するからコピペでいいけど、CI_DEPLOY_TOKEN
は上でも書いた通り自分で環境変数として作る必要がある。名前変えたらもちろん合わせる事。
いちいち || true
してるのは初回実行とかで拾えなかった時パイプラインを失敗としないため。本当は拾えてほしい時もエラーにならない問題はある。
test_templateはいい感じに
各テスト実行の通り
allure_reportでreports,resultsをArtifactsで保存
pagesが使う分にはreportsでいいけどresultsが次回実行の時にいる
pagesは名前固定
public にhtml保存すりゃいいっぽい。report持っていく