Cypress で E2E テスト結果のファイルと動画をコンテナーから取り出してみた

CI パイプラインなどで Cypress を使用した E2E テストを行うことがあります。コンテナーイメージ版の Cypress を使用すると実行が簡単で便利なのですが、コンテナー内に結果ファイルが出力されます。結果ファイルをコンテナー内から取り出して CI パイプラインと紐付け保管しておきたいので、やってみました。

E2E サンプルコード

~/work/cypress/cypress/integration/spec.js にファイルを作成します。

describe('test_name', function() {
  it('what_it_does', function() {
    cy.viewport(1024, 768) 
    cy.visit('http://192.168.10.10:8080/')
    cy.get('.navbar > .navbar-custom-menu > .nav > li > #signin').click()
    cy.get('.list-group > .list-group-item > form > .form-group > #userName').click()
    cy.get('.list-group > .list-group-item > form > .form-group > #userName').type('root')
    cy.get('.list-group > .list-group-item > form > .form-group > #password').type('root')
    cy.get('.list-group > .list-group-item > form > div > .btn').click()
    cy.get('.navbar > .navbar-custom-menu > .nav > .dropdown:nth-child(2) > .dropdown-toggle').click()
    cy.get('.dropdown-menu > li > .menu > li:nth-child(4) > a').click()
  })
})

Docker 実行サンプル

spec.js.mp4 と output.xml を取り出します。

docker run -it \
  --name cypress \
  -v $HOME/work/cypress/:/e2e \
  -w /e2e \
  cypress/included:9.4.1 \
  --browser chrome \
  --reporter junit \
  --reporter-options "mochaFile=results/output.xml,toConsole=true"

docker cp cypress:/e2e/cypress/videos/spec.js.mp4 .

docker cp cypress:/e2e/results/output.xml .

docker rm cypress

参考

https://docs.cypress.io/guides/overview/why-cypress

タグ: ,