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
タグ: Cypress, Docker