CI: build the WSL job on ext4, skip the unused Chromium download, list tsconfig types (#772)

WSL job copies the checkout onto ext4 before building (9P was the cost: 605 s to 348 s); Playwright installs only the headless shell; every tsconfig lists its @types explicitly, a verified no-op on 5.9 and the prerequisite for TypeScript 7.
This commit is contained in:
Olivier Chafik 2026-09-08 19:18:07 +01:00 • committed by GitHub
commit 352f6ced4d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
50 changed files with 58 additions and 1 deletions

View file

@ -147,8 +147,10 @@ jobs:
- run: npm ci
# Headless runs without a channel use chromium-headless-shell, so the
# full Chromium build (about 165 MB) would only be downloaded, never run.
- name: Install Playwright browsers
run: npx playwright install --with-deps chromium
run: npx playwright install --with-deps --only-shell chromium
- name: Run E2E tests
run: npx playwright test --reporter=list
@ -180,9 +182,14 @@ jobs:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
# The checkout lives on the Windows drive, which WSL reaches over 9P;
# writing node_modules there is what makes this job slow (npm ci alone
# took about 3 minutes). Copy the tree onto the distro's ext4 filesystem
# first, as Microsoft's WSL guidance recommends for anything I/O heavy.
- name: Build and test in WSL
shell: wsl-bash {0}
run: |
cp -r "$(pwd)" ~/ext-apps && cd ~/ext-apps
npm ci
npm run build
npm run examples:build

View file

@ -59,6 +59,7 @@ npm pkg set scripts.start='concurrently --raw "cross-env NODE_ENV=development IN
```json source="../examples/quickstart/tsconfig.json"
{
"compilerOptions": {
"types": ["node", "vite/client"],
"target": "ESNext",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"module": "ESNext",
@ -87,6 +88,7 @@ npm pkg set scripts.start='concurrently --raw "cross-env NODE_ENV=development IN
```json source="../examples/quickstart/tsconfig.server.json"
{
"compilerOptions": {
"types": ["node"],
"target": "ES2022",
"lib": ["ES2022"],
"module": "NodeNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node", "vite/client"],
"target": "ESNext",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"module": "ESNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node", "vite/client"],
"target": "ESNext",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"module": "ESNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node"],
"target": "ES2022",
"lib": ["ES2022"],
"module": "NodeNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node", "vite/client"],
"target": "ESNext",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"module": "ESNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node"],
"target": "ES2022",
"lib": ["ES2022"],
"module": "NodeNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node", "vite/client"],
"target": "ESNext",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"module": "ESNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node"],
"target": "ES2022",
"lib": ["ES2022"],
"module": "NodeNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node", "vite/client"],
"target": "ESNext",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"module": "ESNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node"],
"target": "ES2022",
"lib": ["ES2022"],
"module": "NodeNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node", "vite/client"],
"target": "ESNext",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"module": "ESNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node"],
"target": "ES2022",
"lib": ["ES2022"],
"module": "NodeNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node", "vite/client"],
"target": "ESNext",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"module": "ESNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node"],
"target": "ES2022",
"lib": ["ES2022"],
"module": "NodeNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node", "vite/client"],
"target": "ESNext",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"module": "ESNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node"],
"target": "ES2022",
"lib": ["ES2022"],
"module": "NodeNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node", "vite/client"],
"target": "ESNext",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"module": "ESNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node"],
"target": "ES2022",
"lib": ["ES2022"],
"module": "NodeNext",

View file

@ -1,5 +1,6 @@
{
"compilerOptions": {
"types": ["node", "vite/client"],
"target": "ESNext",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"module": "ESNext",

Some files were not shown because too many files have changed in this diff Show more