-
Notifications
You must be signed in to change notification settings - Fork 48
131 lines (120 loc) · 4.26 KB
/
dev.yaml
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
name: Alloy Dev
on:
pull_request:
workflow_dispatch:
env:
SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
SAUCE_JOB: "Alloy Dev Workflow"
SAUCE_CAPABILITIES_OVERRIDES_PATH: "sauceLabsCapabilities.json"
EDGE_BASE_PATH: ee-pre-prd
ALLOY_ENV: int
SAUCE_TUNNEL_ID: github-action-tunnel
jobs:
linting:
name: "Linting files"
runs-on: ubuntu-latest
steps:
- name: Set up Node.js version
uses: actions/setup-node@v4
with:
node-version: 22
- uses: actions/checkout@v4
- uses: actions/cache@v4
id: npm-cache
with:
path: "**/node_modules"
key: ${{ runner.os }}-modules-${{ hashFiles('**/package-lock.json') }}-${{ secrets.NPM_CACHE_VERSION }} # increment NPM_CACHE_VERSION secret to force cache reset
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci
- name: Linting
run: npm run lint
unit-test:
name: "Unit Test"
runs-on: ubuntu-latest
steps:
- name: Set up Node.js version
uses: actions/setup-node@v4
with:
node-version: 22
- uses: actions/checkout@v4
- uses: actions/cache@v4
id: npm-cache
with:
path: "**/node_modules"
key: ${{ runner.os }}-modules-${{ hashFiles('**/package-lock.json') }}-${{ secrets.NPM_CACHE_VERSION }} # increment NPM_CACHE_VERSION secret to force cache reset
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci
- name: Build
run: npm run test:functional:build:int
- uses: saucelabs/sauce-connect-action@v2
with:
username: ${{ secrets.SAUCE_USERNAME }}
accessKey: ${{ secrets.SAUCE_ACCESS_KEY }}
- name: Run Unit Test
run: npx karma start karma.saucelabs.conf.cjs --single-run
env:
BUILD_NUMBER: $GITHUB_RUN_NUMBER
BUILD_ID: $GITHUB_RUN_ID
JOB_NUMBER: $GITHUB_JOB
alloy-int-e2e:
name: "Dev Functional Test - TestCafe"
runs-on: ubuntu-latest
needs: unit-test
timeout-minutes: 60
steps:
- name: Set up Node.js version
uses: actions/setup-node@v4
with:
node-version: 22
- uses: actions/checkout@v4
- name: Clear cache
uses: actions/cache@v4
id: npm-cache
with:
path: "**/node_modules"
key: ${{ runner.os }}-modules-${{ hashFiles('**/package-lock.json') }}-${{ secrets.NPM_CACHE_VERSION }}
- name: Store Alloy version into env
uses: nyaa8/package-version@v1
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci
- name: Build
run: npm run test:functional:build:int
env:
ALLOY_PROD_VERSION: ${{ env.PACKAGE_VERSION }}
- name: Start Sauce Connect Tunnel
uses: saucelabs/[email protected]
env:
GITHUB_TOKEN: ${{ github.token }}
with:
username: ${{ secrets.SAUCE_USERNAME }}
accessKey: ${{ secrets.SAUCE_ACCESS_KEY }}
tunnelIdentifier: ${{ env.SAUCE_TUNNEL_ID }}
- name: Run TestCafe Tests
run: |
npx testcafe "saucelabs:Safari@latest:macOS 13,saucelabs:Firefox@latest:Windows 11,saucelabs:Chrome@latest:Windows 11" \
test/functional/specs/**/*.js \
--reporter spec,saucelabs \
--skip-js-errors \
--disable-page-caching \
--page-load-timeout 5000 \
--speed 1 \
-e ALLOY_PROD_VERSION=${{ env.PACKAGE_VERSION }} \
-e NPM_PACKAGE_VERSION=${{ env.PACKAGE_VERSION }} \
-e ALLOY_ENV=int \
-e EDGE_BASE_PATH=ee-pre-prd
env:
SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
SAUCE_TUNNEL_ID: ${{ env.SAUCE_TUNNEL_ID }}
- name: Handle Test Failures
if: failure()
uses: actions/github-script@v7
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const handleTestFailures = require('./.github/scripts/handle-test-failures.js')
await handleTestFailures({ github, context })