diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml new file mode 100644 index 0000000..1d1f8bb --- /dev/null +++ b/.github/workflows/cypress.yml @@ -0,0 +1,62 @@ +name: Cypress Tests with Allure Report + +on: + push: + branches: + - main + - develop + pull_request: + branches: + - main + - develop + +jobs: + tests: + runs-on: ubuntu-latest + + steps: + # Step 1: Check out the repository + - uses: actions/checkout@v4 + + # Step 2: Set up Node.js + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + # Step 3: Install dependencies + - name: Install dependencies + run: | + npm ci + npx cypress install # Ensure Cypress is installed + + # Step 4: Set up Allure commandline + - name: Set up Allure commandline + run: npm install -g allure-commandline + + # Step 5: Install additional dependencies for Allure and Cypress + - name: Install additional dependencies + run: | + npm install mocha-allure-reporter allure-cypress --save-dev + npm install @bahmutov/cypress-esbuild-preprocessor @badeball/cypress-cucumber-preprocessor cypress-file-upload --save-dev + + # Step 6: Run Cypress tests and generate Allure results (ensure it doesn't fail the workflow) + - name: Run Cypress tests + run: | + npx cypress run --reporter mocha-allure-reporter --reporter-options allureResults=allure-results || true + echo "Cypress tests completed (even with failures)" + + # Step 7: Always generate Allure report, even if tests failed + - name: Generate Allure report + run: | + allure generate allure-results --clean + if: always() # Ensures it runs even if the previous step fails + + # Step 8: Deploy Allure Report to GitHub Pages + - name: Deploy Allure Report to GitHub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + personal_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./allure-report # Folder where the Allure report is generated + publish_branch: gh-pages # Deploy to gh-pages branch + if: always() # Ensures this step runs even if tests fail