Cypress uruchamianie testów na Githubie

Cypress IO

Loading

Cypress uruchamianie testów na Githubie – to wpis pokazujący w jaki sposób w kilku krótkich krokach dokonać integracji i uruchamiać testy Cypressa na  Githubie. Jeżeli jesteś zainteresowany innymi wpisami dotyczącymi Cypressa, zapraszamy do odpowiedniego działu.

Wprowadzenie

Tworząc testy automatyczne z wykorzystaniem Cypressa, bardzo ważnym aspektem jest aby wykorzystywać nasze testy w codziennej pracy. Jaki sens jest jednak tworzyć testy automatyczne a później uruchamiać je tylko w środowisku lokalnym? Oczywiście stworzone testy pomogą szybciej sprawdzić czy nie mamy do czynienia z regresją, natomiast winniśmy zmierzać w kierunku tworzenia testów i uruchamiania ich w naszym środowisku w sposób automatyczny. 

Tworzenie pliku *.yml

Chcąc uruchamiać testy z poziomu Githuba nasze testy będą opierać się o stworzenie pliku *.yml, który będzie naszym centrum dowodzenia i zarządzania. Do uruchomienia naszych testów konieczne będzie:

  • runner na Githubie, na podstawie którego testy będą uruchamiane (pytaj Devopsów o tag)
  • obraz dockerowy cypressa – dostępne na dockerhub.com
I. Gotowy skrypt

W naszym projekcie testowym tworzymy plik *.yml, a następnie uzupełniamy go

name: Smoke Tests
on:
workflow_dispatch:
push:
jobs:
cypress-run:
  runs-on: ubuntu-latest
  strategy:
    fail-fast: false
    matrix:
      include:
        - spec: "cypress/e2e/API/**/*"
          browser: "electron"
        - spec: "cypress/e2e/**/*"
          browser: "chrome"

  container:
    image: cypress/browsers
    options: --user 1001

  steps:
    - name: Checkout Repository
      uses: actions/checkout@v4
    - name: Set Safe Spec Name
      run: echo "SAFE_SPEC_NAME=$(echo '${{ matrix.spec }}' | sed 's/[^a-zA-Z0-9._-]/_/g')" >> $GITHUB_ENV
    - name: Install Dependencies
      run: npm install

    - name: Delay Before Tests
        run: sleep ${{ matrix.delay }}

    - name: Run Cypress Tests
        run: npx cypress run --spec "${{ matrix.spec }}" --browser ${{ matrix.browser }}

    - name: Archive Test Report
        uses: actions/upload-artifact@v4

        if: always()

      with:
        name: cypress-reports-${{ matrix.browser }}-${{ env.SAFE_SPEC_NAME }}-${{ github.run_id }}
        path: cypress/report/
          retention-days: 14

    - name: Archive Screenshots
      uses: actions/upload-artifact@v4
      if: always()
      with:
          name: cypress-screenshots-${{ matrix.browser }}-${{ env.SAFE_SPEC_NAME }}-${{ github.run_id }}

        path: cypress/screenshots
          retention-days: 14

    - name: Archive Videos
        uses: actions/upload-artifact@v4

        if: always()

      with:
        name: cypress-videos-${{ matrix.browser }}-${{ env.SAFE_SPEC_NAME }}-${{ github.run_id }}
        path: cypress/videos
        retention-days: 14
 

Co tam jest

W ramach opisanego flow mamy możliwość uruchomienia testów – wg. katalogów które mamy w strukturze.

Wskazaliśmy też możliwe przeglądarki do wyboru. 

Dodaliśmy też flagę

options: --user 1001
która wspiera ustawianie usera roota i zwiększenie uprawnień. W innym wypadku jest problem z ustawianiem przeglądarek. 
Takie flow umożliwia nam uruchomienie Cypressa na Githubie z wykorzystaniem jedynie runnera.
Przechowujemy też screenshoty, video oraz raporty.

 

Podsumowanie

Cypress uruchamianie testów na Githubie – to kolejny wpis mający zachęcić Was do instalacji i sprawdzenia narzędzia. Z racji popularyzacji narzędzia i dużego wsparcia które otrzymał Cypress na rozwój, będziemy poszerzać wpisy na ten temat. Wszelkie artykuły związane z Cypress IO znajdziecie w dedykowanym dziale.