Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
f1ac7bb
ci(e2e): simplify workflow by removing sharding
lidel Jan 24, 2026
908ffe0
test(e2e): remove CI-specific config from playwright
lidel Jan 24, 2026
edd0201
test(e2e): add timeouts and logging to test setup
lidel Jan 24, 2026
a88f27e
test(e2e): fix flaky grid-view and files tests
lidel Jan 24, 2026
f008ee7
fix(e2e): properly stop Kubo daemon in global teardown
lidel Jan 24, 2026
f2ae4ae
fix(e2e): enable trace capture on test failure
lidel Jan 24, 2026
28b77a5
refactor(e2e): modernize tests to use Playwright locator API
lidel Jan 24, 2026
f39bad2
fix(e2e): use proper Promise parameter names for eslint
lidel Jan 24, 2026
b9ed885
ci(e2e): always install playwright deps
lidel Jan 24, 2026
154ef9f
test(e2e): add diagnostic instrumentation to debug CI hangs
lidel Jan 25, 2026
a4a70ef
test(e2e): make webui port dynamic and add more CI diagnostics
lidel Jan 25, 2026
2541447
test(e2e): bypass npm script and use sync logging for CI debugging
lidel Jan 25, 2026
20ad109
test(e2e): add config load test and remove DEBUG env var
lidel Jan 25, 2026
53a36c9
fix(e2e): replace npx http-server with built-in node server
lidel Jan 25, 2026
9b4cb09
test(e2e): add dedicated server script for static files
lidel Jan 25, 2026
7fd1b42
test(e2e): fix CI error masking and show server output
lidel Jan 25, 2026
1a870e5
test(e2e): bypass npx to run playwright directly
lidel Jan 25, 2026
973e4ff
test(e2e): try starting webui server manually in CI
lidel Jan 25, 2026
fa9c3ab
test(e2e): add diagnostic to isolate globalSetup hang
lidel Jan 25, 2026
add3197
test(e2e): disable webServer on CI, remove pipe that may cause hang
lidel Jan 25, 2026
1e48a0b
test(e2e): add strace and browser launch diagnostics
lidel Jan 25, 2026
4148dd1
test(e2e): add verbose strace with periodic snapshots, single worker
lidel Jan 25, 2026
d3f2406
test(e2e): strace all syscalls from npm run test:e2e
lidel Jan 25, 2026
5e92956
test(ci): pin Node.js to 24.11.0 to test ESM loader regression theory
lidel Jan 25, 2026
2da893c
ci(e2e): remove strace and use global NODE_VERSION env
lidel Jan 26, 2026
fb7a26a
ci(e2e): optimize cache keys for better reuse
lidel Jan 26, 2026
8a1ba8a
test(e2e): simplify logging in setup files
lidel Jan 26, 2026
3e3d2d4
test(e2e): revert debug additions, keep daemon cleanup
lidel Jan 26, 2026
1e6740d
test(e2e): modernize selectors and add centralized fixtures
lidel Jan 26, 2026
1225ffd
ci: upgrade actions to latest major versions and centralize tool vers…
lidel Jan 26, 2026
054bff3
test(e2e): allow .only locally and restore bulk import check
lidel Jan 26, 2026
abe1f0a
ci: fix codecov uploads and optimize npm install caching
lidel Jan 26, 2026
31014c6
ci: optimize playwright install by skipping browser download on cache…
lidel Jan 26, 2026
94c2348
chore(deps): update playwright to 1.58.0
lidel Jan 26, 2026
e1acac5
docs: restructure README and add developer notes
lidel Jan 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ jobs:
name: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.2
- uses: actions/checkout@v6

- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: lts/*
node-version-file: '.tool-versions'
cache: 'npm'

# Separate cache for build dir, we reuse it in release publish workflow
- name: Cache build output
uses: actions/cache@v4
uses: actions/cache@v5
id: build-cache
with:
path: build
Expand All @@ -40,7 +40,7 @@ jobs:
- name: Attach produced build to Github Action
# only re-upload if we re-built
if: steps.build-cache.outputs.cache-hit != 'true'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: ipfs-webui_${{ github.sha }}-${{ runner.os }}-build
path: build
Expand Down
115 changes: 84 additions & 31 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ jobs:
test-unit:
name: 'test:unit'
uses: ./.github/workflows/test-unit.yml
secrets: inherit

publishPreview:
name: publish preview
Expand All @@ -30,16 +31,16 @@ jobs:
outputs:
cid: ${{ steps.ipfs.outputs.cid }}
steps:
- uses: actions/checkout@v4.1.2
- uses: actions/checkout@v6

- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: lts/*
node-version-file: '.tool-versions'
cache: 'npm'

- name: Cache build output
uses: actions/cache@v4
uses: actions/cache@v5
id: build-cache
with:
path: build
Expand All @@ -49,7 +50,7 @@ jobs:
${{ runner.os }}-build-${{ hashFiles('package.json', 'package-lock.json', 'public', 'src/**', '*.js', '*.ts') }}

- name: Cache bigger downloads
uses: actions/cache@v4
uses: actions/cache@v5
id: cache
with:
path: ${{ github.workspace }}/.cache
Expand Down Expand Up @@ -83,7 +84,7 @@ jobs:
run: |
ipfs dag export ${{ steps.ipfs.outputs.cid }} > ipfs-webui_${{ github.sha }}.car
- name: Attach produced build to Github Action
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: ipfs-webui_${{ github.sha }}.car
path: ipfs-webui_${{ github.sha }}.car
Expand Down Expand Up @@ -160,16 +161,16 @@ jobs:
- name: Fail job due to pinning failure
# only fail if pinning failed for main commits
if: github.ref == 'refs/heads/main' && steps.pin-w3up.outcome == 'failure' && steps.pin-cluster.outcome == 'failure'
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
core.setFailed('Pinning did not succeed')

# dnslink-dnsimple requires go
- uses: actions/setup-go@v5
- uses: actions/setup-go@v6
if: github.ref == 'refs/heads/main'
with:
go-version: "1.20.x"
go-version-file: '.tool-versions'

- name: Set up dnslink updater
if: github.ref == 'refs/heads/main'
Expand All @@ -190,28 +191,70 @@ jobs:
test-e2e:
name: 'test:e2e'
uses: ./.github/workflows/test-e2e.yml
secrets: inherit

test-storybook:
name: 'test:storybook'
uses: ./.github/workflows/test-storybook.yml
secrets: inherit

# separate check for TS
typecheck:
name: typecheck
needs: build
uses: ./.github/workflows/typecheck.yml
# consolidated lint job: eslint, typecheck, depcheck
lint:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

# separate check for eslint
eslint:
name: eslint
needs: build
uses: ./.github/workflows/eslint.yml
- name: Setup node
uses: actions/setup-node@v6
with:
node-version-file: '.tool-versions'
cache: 'npm'

# separate check for dep-check
depcheck:
name: depcheck
needs: build
uses: ./.github/workflows/depcheck.yml
- name: Cache node_modules
uses: actions/cache@v5
id: npm-cache
with:
path: node_modules
key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json', 'patches/**', '.tool-versions') }}
restore-keys: |
npm-${{ runner.os }}-

- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci --prefer-offline --no-audit --progress=false

- name: ESLint
id: eslint
run: npm run eslint
continue-on-error: true

- name: TypeCheck
id: typecheck
uses: gozala/typescript-error-reporter-action@v1.0.9
continue-on-error: true
with:
project: tsconfig.json

- name: TypeCheck (userland)
id: typecheck-userland
run: npm run typecheck
continue-on-error: true

- name: DepCheck
id: depcheck
run: npm run dep-check
continue-on-error: true

- name: Check for failures
if: steps.eslint.outcome == 'failure' || steps.typecheck.outcome == 'failure' || steps.typecheck-userland.outcome == 'failure' || steps.depcheck.outcome == 'failure'
run: |
echo "Lint failures detected:"
echo " eslint: ${{ steps.eslint.outcome }}"
echo " typecheck: ${{ steps.typecheck.outcome }}"
echo " typecheck-userland: ${{ steps.typecheck-userland.outcome }}"
echo " depcheck: ${{ steps.depcheck.outcome }}"
exit 1

# automatically commit new tag and changelog updates when a push to main happens.
# This will then trigger
Expand All @@ -220,15 +263,15 @@ jobs:
release:
name: 'Run semantic release'
runs-on: ubuntu-latest
needs: [build, publishPreview, eslint, typecheck, depcheck, test-e2e, test-unit, test-storybook]
needs: [build, publishPreview, lint, test-e2e, test-unit, test-storybook]
steps:
- name: Checkout 🛎️
uses: actions/checkout@v4.1.2
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Cache bigger downloads
uses: actions/cache@v4
uses: actions/cache@v5
id: cache
with:
path: ${{ github.workspace }}/.cache
Expand All @@ -238,7 +281,7 @@ jobs:
${{ runner.os }}-

- name: Cache build dir
uses: actions/cache@v4
uses: actions/cache@v5
id: build-cache
with:
path: build
Expand All @@ -252,16 +295,26 @@ jobs:
echo ${{ needs.publishPreview.outputs.cid }} > .cid

- name: Setup node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: lts/*
node-version-file: '.tool-versions'
cache: 'npm'

- name: Cache node_modules
uses: actions/cache@v5
id: npm-cache
with:
path: node_modules
key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json', 'patches/**', '.tool-versions') }}
restore-keys: |
npm-${{ runner.os }}-

- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci --prefer-offline --no-audit --progress=false

- name: Download CAR artifact
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
name: ipfs-webui_${{ github.sha }}.car

Expand Down
21 changes: 0 additions & 21 deletions .github/workflows/depcheck.yml

This file was deleted.

21 changes: 0 additions & 21 deletions .github/workflows/eslint.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/node-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ jobs:
node-version: ${{ steps.node_version.outputs.version }}
steps:

- uses: actions/checkout@v4.1.2
- uses: actions/checkout@v6

- name: Use Node.js ${{ inputs.gh-node-version }}
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: ${{ inputs.gh-node-version }}
cache: 'npm'
Expand Down
Loading