forked from elementor/elementor
-
Notifications
You must be signed in to change notification settings - Fork 1
130 lines (123 loc) · 4.41 KB
/
plugins-tester.yml
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
name: Plugins Tester
on:
workflow_dispatch:
inputs:
plugins:
type: string
description: 'Plugins list seperated by comma'
required: false
diffThreshold:
type: string
description: 'Ignore mismatch threshold'
required: false
default: '0.2'
pull_request:
# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
build-plugin:
name: Build plugin
runs-on: ubuntu-latest
outputs:
changelog_diff: ${{ steps.changelog_diff_files_PT.outputs.diff }}
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Check if this is only a changelog PR
id: changelog_diff_files_PT
uses: technote-space/get-diff-action@v6
with:
# PATTERNS are:
# Everything: **/*
# Everything in directories starting with a period: .*/**/*
# Not readme.txt: !readme.txt
PATTERNS: |
**/*
.*/**/*
!readme.txt
- name: Install Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Cache node modules
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Install dependencies
if: github.event.pull_request.title == null || steps.changelog_diff_files_PT.outputs.diff
run: npm ci
- name: Build
if: github.event.pull_request.title == null || steps.changelog_diff_files_PT.outputs.diff
run: npx grunt build
- name: Save build to cache
if: github.event.pull_request.title == null || steps.changelog_diff_files_PT.outputs.diff
uses: actions/cache@v3
id: restore-build
with:
path: ./build/*
key: ${{ github.sha }}
Plugin-tester:
name: Test Plugins
runs-on: ubuntu-latest
needs: [build-plugin]
if: ${{ github.event.pull_request.title == null || needs.build-plugin.outputs.changelog_diff }}
strategy:
matrix:
testSuite:
- 'test:part1'
- 'test:part2'
- 'test:part1:containers'
- 'test:part2:containers'
- 'test'
exclude:
- testSuite: ${{ !github.event.inputs.plugins || 'test:part1' }}
- testSuite: ${{ !github.event.inputs.plugins || 'test:part2' }}
- testSuite: ${{ !github.event.inputs.plugins || 'test:part1:containers' }}
- testSuite: ${{ !github.event.inputs.plugins || 'test:part2:containers' }}
- testSuite: ${{ github.event.inputs.plugins || 'test' }}
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Install Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Restore build from cache
uses: actions/cache@v3
id: restore-build
with:
path: ./build/*
key: ${{ github.sha }}
- name: Set Env vars
run: |
echo "PLUGINS_TESTER__PLUGINS_TO_TEST=${{ github.event.inputs.plugins }}" >> $GITHUB_ENV
echo "PLUGINS_TESTER__DIFF_THRESHOLD=${{ github.event.inputs.diffThreshold }}" >> $GITHUB_ENV
- run: cd ./tests/plugins-tester && npm install
- name: Run tests
run: cd ./tests/plugins-tester && npm run ${{ matrix.testSuite }}
- uses: actions/upload-artifact@v3
if: failure()
with:
name: errors-reports
path: ./tests/plugins-tester/errors-reports/
retention-days: 7
test-result:
needs: Plugin-tester
if: ${{ always() }} # Will be run even if 'Plugin-tester' matrix will be skipped
runs-on: ubuntu-22.04
name: Plugin Tester - Test Results
steps:
- name: Test status
run: echo "Test status is - ${{ needs.Plugin-tester.result }}"
- name: Check Plugin-tester matrix status
if: ${{ needs.Plugin-tester.result != 'success' && needs.Plugin-tester.result != 'skipped' }}
run: exit 1