Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up how Cypress tests are run #218

Merged
merged 1 commit into from
Dec 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 0 additions & 18 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,6 @@ updates:
- dependency-type: direct
schedule:
interval: "daily"
assignees:
- "wpscholar"
reviewers:
- "wpalani"
- "circlecube"
- "wpscholar"
commit-message:
prefix: "GitHub Actions"
include: "scope"
Expand All @@ -30,12 +24,6 @@ updates:
schedule:
interval: "daily"
versioning-strategy: increase
assignees:
- "wpscholar"
reviewers:
- "wpalani"
- "circlecube"
- "wpscholar"
commit-message:
prefix: "NPM"
prefix-development: "NPM Dev"
Expand All @@ -53,12 +41,6 @@ updates:
allow:
- dependency-type: direct
versioning-strategy: increase
assignees:
- "wpscholar"
reviewers:
- "wpalani"
- "circlecube"
- "wpscholar"
commit-message:
prefix: "Composer"
prefix-development: "Composer Dev"
Expand Down
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-mojo' || env.RECORD_REPLAY_API_KEY == '' }}
run: npx cypress run
if: ${{ github.repository != 'newfold-labs/wp-plugin-mojo' || 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: "mojo, php-${{ matrix.phpVersion }}, wp-${{ matrix.wpVersion }}"
RECORD_REPLAY_API_KEY: ${{ secrets.RECORD_REPLAY_API_KEY }}
if: ${{ github.repository == 'newfold-labs/wp-plugin-mojo' && 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 mojo,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-mojo' && github.actor != 'dependabot[bot]' }}
run: npm run test:e2e -- --browser chrome --record --key ${{ secrets.CYPRESS_RECORD_KEY }} --tag "mojo,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-mojo' }}
run: npm run test:e2e -- --browser chrome --tag "mojo, 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"
21 changes: 6 additions & 15 deletions .github/workflows/cypress.yml
Original file line number Diff line number Diff line change
Expand Up @@ -100,22 +100,13 @@ jobs:
- name: Install WordPress
run: npx @wordpress/env@latest start

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

- name: Run Advanced Cypress Tests
uses: replayio/[email protected]
env:
RECORD_REPLAY_API_KEY: ${{ secrets.RECORD_REPLAY_API_KEY }}
if: ${{ github.repository == 'newfold-labs/wp-plugin-mojo' && 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 mojo
upload-all: false
- name: Run Cypress Cloud Tests
if: ${{ github.repository == 'newfold-labs/wp-plugin-mojo' && github.actor != 'dependabot[bot]' }}
run: npm run test:e2e -- --browser chrome --record --key ${{ secrets.CYPRESS_RECORD_KEY }} --tag mojo

- 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 @@ -31,9 +30,6 @@ module.exports = defineConfig({

const semver = require('semver');

// Setup Replay
cypressReplay.default(on, config);

// Ensure that the base URL is always properly set.
if (config.env && config.env.baseUrl) {
config.baseUrl = config.env.baseUrl;
Expand Down
Loading
Loading