-
Notifications
You must be signed in to change notification settings - Fork 17
133 lines (104 loc) · 3.42 KB
/
testing.yml
File metadata and controls
133 lines (104 loc) · 3.42 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
name: Testing Suite
on:
pull_request:
types: [opened, synchronize]
push:
branches:
- main
workflow_dispatch:
env:
NODE_VERSION: 22.16
jobs:
linting:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Run npm ci
run: npm ci
- name: Run npm prettier
continue-on-error: true
run: |
./node_modules/.bin/prettier --check . || echo "::warning::Prettier found formatting issues. Fix it locally by running './node_modules/.bin/prettier --write .'"
- name: Run ESLint
run: ./node_modules/.bin/eslint --ext .js .
unit-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Run npm ci
run: npm ci
- name: Build project
run: npm run build
- name: Run unit tests
run: npm run test:unit
env:
CI: true
NODE_ENV: test
build:
runs-on: ubuntu-latest
needs: unit-tests
if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'workflow_dispatch'
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Run npm ci
run: npm ci
- name: Build project
run: npm run build
- name: Commit build changes
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add dist/
git diff --staged --quiet || git commit -m "Update build artifacts [skip ci]"
git push
browserstack:
runs-on: ubuntu-latest
needs: [unit-tests, linting, build]
if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'workflow_dispatch'
steps:
- name: "BrowserStack Env Setup"
uses: "browserstack/github-actions/setup-env@master"
with:
username: ${{ secrets.BROWSERSTACK_USERNAME }}
access-key: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
- name: "Start BrowserStackLocal Tunnel"
uses: "browserstack/github-actions/setup-local@master"
with:
local-testing: "start"
local-logging-level: "all-logs"
local-identifier: "random"
- uses: actions/checkout@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Run npm ci
run: npm ci
- name: Build project
run: npm run build
- name: Run BrowserStack tests
run: node ./test/index.js
env:
CI: true
NODE_ENV: test
DEBUG: false
LOCATION: ${{ secrets.LOCATION }}
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
- name: "Stop BrowserStackLocal"
uses: "browserstack/github-actions/setup-local@master"
with:
local-testing: "stop"