-
Notifications
You must be signed in to change notification settings - Fork 4
141 lines (122 loc) · 5.09 KB
/
tests.yml
File metadata and controls
141 lines (122 loc) · 5.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
name: E2E Tests
on:
push:
pull_request:
jobs:
e2e:
name: PHP ${{ matrix.php }} - WP ${{ matrix.wordpress }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# temporary disabled for testing
# php: [ '7.4', '8.0', '8.1', '8.2' ]
# wordpress: [ '5.9', '6.0', '6.3', '6.5.3' ]
php: [ '8.4' ]
wordpress: [ '6.5' ]
exclude:
# Exclude older PHP versions with newer WordPress
- php: '7.4'
wordpress: '6.5.3'
services:
mysql:
image: mysql:8.0
env:
MYSQL_DATABASE: wordpress
MYSQL_ROOT_PASSWORD: root
ports: [ 3306:3306 ]
options: >-
--health-cmd="mysqladmin ping -h 127.0.0.1 -uroot -proot"
--health-interval=10s
--health-timeout=5s
--health-retries=5
env:
WP_VERSION: ${{ matrix.wordpress }}
WP_SITE_URL: http://localhost:8100
WP_DB_NAME: wordpress
WP_DB_USER: root
WP_DB_PASS: root
WP_DB_HOST: 127.0.0.1
steps:
- name: Checkout plugin
uses: actions/checkout@v4
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: mysqli, zip, gd
coverage: none
tools: wp-cli
- name: Cache WordPress archive
id: cache-wordpress
uses: actions/cache@v3
with:
path: wordpress
key: wp-${{ matrix.wordpress }}
- name: Download WordPress
if: steps.cache-wordpress.outputs.cache-hit != 'true'
run: |
curl -O https://wordpress.org/wordpress-${WP_VERSION}.tar.gz
tar -xzf wordpress-${WP_VERSION}.tar.gz
rm wordpress-${WP_VERSION}.tar.gz
- name: Install WordPress
run: |
rm -f wordpress/wp-config.php
wp config create \
--dbname="$WP_DB_NAME" \
--dbuser="$WP_DB_USER" \
--dbpass="$WP_DB_PASS" \
--dbhost="$WP_DB_HOST" \
--path=wordpress \
--skip-check
wp core install \
--url="${WP_SITE_URL}" \
--title="Test Site" \
--admin_user=admin \
--admin_password=admin \
--admin_email=test@example.com \
--path=wordpress \
--skip-email \
--allow-root
wp user create author author@local.test --role=author --user_pass=author --path=wordpress
wp user create editor editor@local.test --role=editor --user_pass=editor --path=wordpress
wp user create subscriber subscriber@local.test --role=subscriber --user_pass=subscriber --path=wordpress
- name: Show current config values
run: wp config list --path=wordpress --allow-root
- name: Install plugin
run: |
PLUGIN_SLUG=$(basename "$GITHUB_WORKSPACE")
ln -s "$GITHUB_WORKSPACE" "wordpress/wp-content/plugins/simpleanalytics"
- name: Start PHP server
run: |
php -S localhost:8100 -t wordpress > /dev/null 2>&1 & until curl -sSf http://localhost:8100 > /dev/null; do sleep 0.2; done
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: "pnpm"
- name: Install Playwright and dependencies
run: |
pnpm install
pnpm run tests:install
- name: Cache composer dependencies
uses: actions/cache@v3
with:
path: vendor
key: composer-${{ hashFiles('composer.lock') }}
- name: Run composer install
run: composer install --no-progress --prefer-dist --no-interaction
- name: Run Pest tests
run: ./vendor/bin/pest
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-php${{ matrix.php }}-wp${{ matrix.wordpress }}
path: |
tests/Browser/Screenshots
retention-days: 30