[READ-ONLY] a fast, modern browser for the npm registry
at main 242 lines 7.1 kB view raw
1name: ci 2 3on: 4 pull_request: 5 branches: 6 - main 7 push: 8 branches: 9 - main 10 merge_group: 11 branches: 12 - main 13 14# cancel in-progress runs on new commits to same PR (gitub.event.number) 15concurrency: 16 group: ${{ github.workflow }}-${{ github.event.number || github.sha }} 17 cancel-in-progress: true 18 19permissions: 20 contents: read 21 22jobs: 23 lint: 24 name: 🔠 Lint project 25 runs-on: ubuntu-24.04-arm 26 27 steps: 28 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 29 30 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 31 with: 32 node-version: lts/* 33 34 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c 35 name: 🟧 Install pnpm 36 with: 37 cache: true 38 39 - name: 📦 Install dependencies (root only, no scripts) 40 run: pnpm install --filter . --ignore-scripts 41 42 - name: 🔠 Lint project 43 run: pnpm lint 44 45 types: 46 name: 💪 Type check 47 runs-on: ubuntu-24.04-arm 48 49 steps: 50 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 51 52 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 53 with: 54 node-version: lts/* 55 56 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c 57 name: 🟧 Install pnpm 58 with: 59 cache: true 60 61 - name: 📦 Install dependencies 62 run: pnpm install 63 64 - name: 💪 Type check 65 run: pnpm test:types 66 67 unit: 68 name: 🧪 Unit tests 69 runs-on: ubuntu-24.04-arm 70 71 steps: 72 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 73 74 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 75 with: 76 node-version: lts/* 77 78 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c 79 name: 🟧 Install pnpm 80 with: 81 cache: true 82 83 - name: 📦 Install dependencies 84 run: pnpm install 85 86 - name: 🧪 Unit tests 87 run: pnpm test:unit run --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml 88 89 - name: ⬆︎ Upload test results to Codecov 90 if: ${{ !cancelled() }} 91 uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1 92 with: 93 token: ${{ secrets.CODECOV_TOKEN }} 94 95 test: 96 name: 🧪 Component tests 97 runs-on: ubuntu-24.04-arm 98 99 steps: 100 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 101 102 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 103 with: 104 node-version: lts/* 105 106 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c 107 name: 🟧 Install pnpm 108 with: 109 cache: true 110 111 - name: 📦 Install dependencies 112 run: pnpm install 113 114 - name: 🌐 Install browser 115 run: pnpm playwright install chromium-headless-shell 116 117 - name: 🧪 Component tests 118 run: pnpm test:nuxt run --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml 119 120 - name: ⬆︎ Upload coverage reports to Codecov 121 uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 122 with: 123 report_type: test_results 124 env: 125 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} 126 127 - name: ⬆︎ Upload coverage reports to Codecov 128 uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5 129 env: 130 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} 131 132 browser: 133 name: 🖥️ Browser tests 134 runs-on: ubuntu-24.04-arm 135 container: 136 image: mcr.microsoft.com/playwright:v1.58.0-noble 137 138 steps: 139 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 140 141 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 142 with: 143 node-version: lts/* 144 145 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c 146 name: 🟧 Install pnpm 147 with: 148 cache: true 149 150 - name: 📦 Install dependencies 151 run: pnpm install 152 153 - name: 🏗️ Build project 154 run: pnpm build:test 155 env: 156 VALIDATE_HTML: true 157 158 - name: 🖥️ Test project (browser) 159 run: pnpm test:browser:prebuilt 160 161 a11y: 162 name: ♿ Accessibility audit 163 runs-on: ubuntu-latest # See https://github.com/GoogleChrome/lighthouse/discussions/16834 164 strategy: 165 matrix: 166 mode: [dark, light] 167 168 steps: 169 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 170 171 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 172 with: 173 node-version: lts/* 174 175 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c 176 name: 🟧 Install pnpm 177 with: 178 cache: true 179 180 - name: 📦 Install dependencies 181 run: pnpm install 182 183 - name: 🏗️ Build project 184 run: pnpm build:test 185 186 - name: ♿ Accessibility audit (Lighthouse - ${{ matrix.mode }} mode) 187 run: pnpm test:a11y:prebuilt 188 env: 189 LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }} 190 LIGHTHOUSE_COLOR_MODE: ${{ matrix.mode }} 191 192 knip: 193 name: 🧹 Unused code check 194 runs-on: ubuntu-24.04-arm 195 196 steps: 197 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 198 199 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 200 with: 201 node-version: lts/* 202 203 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c 204 name: 🟧 Install pnpm 205 with: 206 cache: true 207 208 - name: 📦 Install dependencies 209 run: pnpm install 210 211 - name: 🧹 Check for unused code 212 run: pnpm knip 213 214 - name: 🧹 Check for unused production code 215 run: pnpm knip --production 216 217 i18n: 218 name: 🌐 i18n validation 219 runs-on: ubuntu-24.04-arm 220 221 steps: 222 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 223 224 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 225 with: 226 node-version: lts/* 227 228 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c 229 name: 🟧 Install pnpm 230 with: 231 cache: true 232 233 - name: 📦 Install dependencies (root only, no scripts) 234 run: pnpm install --filter . --ignore-scripts 235 236 - name: 🌐 Check for missing or dynamic i18n keys 237 run: pnpm i18n:report 238 239 - name: 🌐 Check i18n schema is up to date 240 run: | 241 pnpm i18n:schema 242 git diff --exit-code i18n/schema.json