Skip to content

Commit

Permalink
Clean up how Cypress tests are run
Browse files Browse the repository at this point in the history
* Remove replay and ensure that we don't send tests to Cypress Cloud for Dependabot PRs
  • Loading branch information
circlecube committed Nov 30, 2023
1 parent fb293a5 commit d9331d3
Show file tree
Hide file tree
Showing 6 changed files with 127 additions and 443 deletions.
25 changes: 5 additions & 20 deletions .github/workflows/cypress-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,27 +114,12 @@ jobs:
run: npx wp-env start --debug

- name: Run Cypress Tests
env:
RECORD_REPLAY_API_KEY: ${{ secrets.RECORD_REPLAY_API_KEY }}
if: ${{ github.repository != 'newfold-labs/wp-plugin-hostgator' || env.RECORD_REPLAY_API_KEY == '' }}
run: npx cypress run
if: ${{ github.repository != 'newfold-labs/wp-plugin-hostgator' || github.actor == 'dependabot[bot]' }}
run: npm run test:e2e -- --browser chrome

- name: Run Cypress Tests
uses: replayio/[email protected]
env:
RECORD_REPLAY_METADATA_TEST_RUN_TITLE: "php-${{ matrix.phpVersion }}, wp-${{ matrix.wpVersion }}"
RECORD_REPLAY_API_KEY: ${{ secrets.RECORD_REPLAY_API_KEY }}
if: ${{ github.repository == 'newfold-labs/wp-plugin-hostgator' && env.RECORD_REPLAY_API_KEY != '' }}
with:
api-key: ${{ secrets.RECORD_REPLAY_API_KEY }}
browser: 'replay-chromium'
command: npm run test:e2e -- --record --key ${{ secrets.CYPRESS_RECORD_KEY }} --tag hostgator,php-${{ matrix.phpVersion }},wp-${{ matrix.wpVersion }}
upload-all: false

- name: List Replays
if: always()
shell: bash
run: npx @replayio/replay ls --json
- name: Run Cypress Cloud Tests
if: ${{ github.repository == 'newfold-labs/wp-plugin-hostgator' && github.actor != 'dependabot[bot]' }}
run: npm run test:e2e -- --browser chrome --record --key ${{ secrets.CYPRESS_RECORD_KEY }} --tag "hostgator,php-${{ matrix.phpVersion }},wp-${{ matrix.wpVersion }}"

- name: Store screenshots of test failures
if: ${{ failure() }}
Expand Down
115 changes: 115 additions & 0 deletions .github/workflows/cypress-tests-beta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
name: Cypress Tests Beta Only

on:
schedule:
# Runs "Every Monday 6am UTC"
- cron: '0 6 * * 1'
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
cancel-in-progress: true

jobs:
test:
name: Run Cypress Beta Only Tests
runs-on: ubuntu-latest
timeout-minutes: 45

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
coverage: none
tools: composer, cs2pr

- name: Setup workflow context
id: workflow
working-directory: ${{ runner.temp }}
env:
REPO: ${{ github.repository }}
run: |
mkdir dist
echo "DIST=${PWD}/dist" >> $GITHUB_OUTPUT
echo "PACKAGE=${REPO##*/}" >> $GITHUB_OUTPUT
- name: Use Node.js 16.x
uses: actions/setup-node@v4
with:
node-version: 16.x
cache: 'npm'

- name: Get Composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- name: Cache Composer vendor directory
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Show versions
run: |
php --version
composer --version
node --version
npm --version
- name: Validate composer.json and composer.lock
run: composer validate

- name: Install PHP Dependencies
run: composer install --no-progress --no-dev --optimize-autoloader --prefer-dist

- name: Setup Registry
run: printf "\n//npm.pkg.github.com/:_authToken=${{ secrets.NEWFOLD_ACCESS_TOKEN }}" >> .npmrc

- name: NPM Install
run: npm install --legacy-peer-deps

- name: Build JavaScript
run: npm run build

- name: Create Distribution Copy
run: rsync -r --include-from=.distinclude --exclude-from=.distignore . ${{ steps.workflow.outputs.DIST }}/${{ steps.workflow.outputs.PACKAGE }}

- name: List Distribution Files
working-directory: ${{ steps.workflow.outputs.DIST }}
run: find .

- name: Fetch WordPress beta version
run: |
wp_beta_zip=$(node -e "
const fetch = require('node-fetch');
fetch('https://api.wordpress.org/core/version-check/1.7/?channel=beta')
.then(response => response.json())
.then(data => data.offers[0].download);
")
echo $wp_beta_zip
- name: Configure WordPress
run: |
echo '{ "core" : "'"${wp_beta_zip}"'" , "plugins":[ "${{ steps.workflow.outputs.DIST }}/${{ steps.workflow.outputs.PACKAGE }}" ] }' > .wp-env.override.json
- name: Install WordPress
run: npx wp-env start --debug

- name: Run Cypress Tests
if: ${{ github.repository == 'newfold-labs/wp-plugin-hostgator' }}
run: npm run test:e2e -- --browser chrome --tag "hostgator, wp-beta"

- name: Store screenshots of test failures
if: failure()
uses: actions/upload-artifact@v3
with:
name: screenshots
path: ./tests/cypress/screenshots

- name: Output debug.log file contents
if: always()
continue-on-error: true
run: npx wp-env run wordpress "cat /var/www/html/wp-content/debug.log"
24 changes: 5 additions & 19 deletions .github/workflows/cypress-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,26 +112,12 @@ jobs:
run: npx @wordpress/env@latest start

- name: Run Cypress Tests
env:
RECORD_REPLAY_API_KEY: ${{ secrets.RECORD_REPLAY_API_KEY }}
if: ${{ github.repository != 'newfold-labs/wp-plugin-hostgator' || env.RECORD_REPLAY_API_KEY == '' }}
run: npx cypress run
if: ${{ github.repository != 'newfold-labs/wp-plugin-hostgator' || github.actor == 'dependabot[bot]' }}
run: npm run test:e2e -- --browser chrome

- name: Run Cypress Tests
uses: replayio/[email protected]
env:
RECORD_REPLAY_API_KEY: ${{ secrets.RECORD_REPLAY_API_KEY }}
if: ${{ github.repository == 'newfold-labs/wp-plugin-hostgator' && env.RECORD_REPLAY_API_KEY != '' }}
with:
api-key: ${{ secrets.RECORD_REPLAY_API_KEY }}
browser: 'replay-chromium'
command: npm run test:e2e -- --record --key ${{ secrets.CYPRESS_RECORD_KEY }} --tag hostgator
upload-all: false

- name: List Replays
if: always()
shell: bash
run: npx @replayio/replay ls --json
- name: Run Cypress Cloud Tests
if: ${{ github.repository == 'newfold-labs/wp-plugin-hostgator' && github.actor != 'dependabot[bot]' }}
run: npm run test:e2e -- --browser chrome --record --key ${{ secrets.CYPRESS_RECORD_KEY }} --tag hostgator

- name: Store screenshots of test failures
if: ${{ failure() }}
Expand Down
4 changes: 0 additions & 4 deletions cypress.config.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
const { defineConfig } = require('cypress')
const cypressReplay = require("@replayio/cypress")
const { phpVersion, core } = require('./.wp-env.json')
const wpVersion = /[^/]*$/.exec(core)[0]

Expand Down Expand Up @@ -30,9 +29,6 @@ module.exports = defineConfig({
// We've imported your old cypress plugins here.
// You may want to clean this up later by importing these.
setupNodeEvents(on, config) {
// Setup Replay
cypressReplay.default(on, config);

return require('./tests/cypress/plugins/index.js')(on, config)
},
baseUrl: 'http://localhost:8880',
Expand Down
Loading

0 comments on commit d9331d3

Please sign in to comment.