From b57278017a5d91144ed354c4fa314d60c1556802 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 21:43:52 -0800 Subject: [PATCH 1/2] chore(deps): bump github.com/tidwall/gjson from 1.16.0 to 1.18.0 (#11168) Bumps [github.com/tidwall/gjson](https://github.com/tidwall/gjson) from 1.16.0 to 1.18.0. - [Commits](https://github.com/tidwall/gjson/compare/v1.16.0...v1.18.0) --- updated-dependencies: - dependency-name: github.com/tidwall/gjson dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 7c4be05fa..a4a5c4ecb 100644 --- a/go.mod +++ b/go.mod @@ -72,7 +72,7 @@ require ( github.com/prometheus/client_golang v1.23.2 github.com/stretchr/testify v1.11.1 github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d - github.com/tidwall/gjson v1.16.0 + github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 github.com/whyrusleeping/go-sysinfo v0.0.0-20190219211824-4a357d4b90b1 github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 diff --git a/go.sum b/go.sum index 1e4be0486..475c95728 100644 --- a/go.sum +++ b/go.sum @@ -809,8 +809,8 @@ github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJ github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U= github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.16.0 h1:SyXa+dsSPpUlcwEDuKuEBJEz5vzTvOea+9rjyYodQFg= -github.com/tidwall/gjson v1.16.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= From ef99e0a0f70b97b713e6e1debf1d3d30806eb92e Mon Sep 17 00:00:00 2001 From: Marcin Rataj Date: Thu, 29 Jan 2026 02:56:42 +0100 Subject: [PATCH 2/2] refactor(ci): add caching to ipfs-webui interop tests (#11173) * ci: add caching to ipfs-webui interop tests cache node_modules, Playwright browsers, and test build output to speed up repeated CI runs. also use node version from ipfs-webui/.tool-versions instead of hardcoding, and upload test artifacts on failure. * docs(ci): add header comment to interop workflow explain what helia-interop and ipfs-webui jobs do --- .github/workflows/interop.yml | 92 ++++++++++++++++++++++++++--------- 1 file changed, 70 insertions(+), 22 deletions(-) diff --git a/.github/workflows/interop.yml b/.github/workflows/interop.yml index 25bdba4f2..f78fd40df 100644 --- a/.github/workflows/interop.yml +++ b/.github/workflows/interop.yml @@ -1,3 +1,17 @@ +# Interoperability Tests +# +# This workflow ensures Kubo remains compatible with the broader IPFS ecosystem. +# It builds Kubo from source, then runs: +# +# 1. helia-interop: Tests compatibility with Helia (JavaScript IPFS implementation) +# using Playwright-based tests from @helia/interop package. +# +# 2. ipfs-webui: Runs E2E tests from ipfs/ipfs-webui repository to verify +# the web interface works correctly with the locally built Kubo binary. +# +# Both jobs use caching to speed up repeated runs (npm dependencies, Playwright +# browsers, and webui build artifacts). + name: Interop on: @@ -84,9 +98,6 @@ jobs: run: shell: bash steps: - - uses: actions/setup-node@v6 - with: - node-version: 20.x - uses: actions/download-artifact@v7 with: name: kubo @@ -96,36 +107,73 @@ jobs: with: repository: ipfs/ipfs-webui path: ipfs-webui - - run: | - echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT - id: npm-cache-dir - - uses: actions/cache@v5 + - uses: actions/setup-node@v6 with: - path: ${{ steps.npm-cache-dir.outputs.dir }} - key: ${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-${{ github.job }}- - - env: - NPM_CACHE_DIR: ${{ steps.npm-cache-dir.outputs.dir }} - run: | - npm ci --prefer-offline --no-audit --progress=false --cache "$NPM_CACHE_DIR" - npx playwright install --with-deps - working-directory: ipfs-webui - - id: ref + node-version-file: 'ipfs-webui/.tool-versions' + - id: webui-ref run: echo "ref=$(git rev-parse --short HEAD)" | tee -a $GITHUB_OUTPUT working-directory: ipfs-webui - - id: state + - id: webui-state env: GITHUB_TOKEN: ${{ github.token }} - ENDPOINT: repos/ipfs/ipfs-webui/commits/${{ steps.ref.outputs.ref }}/status + ENDPOINT: repos/ipfs/ipfs-webui/commits/${{ steps.webui-ref.outputs.ref }}/status SELECTOR: .state KEY: state run: gh api "$ENDPOINT" --jq "$SELECTOR" | xargs -I{} echo "$KEY={}" | tee -a $GITHUB_OUTPUT - - name: Build ipfs-webui@main (state=${{ steps.state.outputs.state }}) + # Cache node_modules based on package-lock.json + - name: Cache node_modules + uses: actions/cache@v5 + id: node-modules-cache + with: + path: ipfs-webui/node_modules + key: ${{ runner.os }}-webui-node-modules-${{ hashFiles('ipfs-webui/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-webui-node-modules- + - name: Install dependencies + if: steps.node-modules-cache.outputs.cache-hit != 'true' + run: npm ci --prefer-offline --no-audit --progress=false + working-directory: ipfs-webui + # Cache Playwright browsers + - name: Cache Playwright browsers + uses: actions/cache@v5 + id: playwright-cache + with: + path: ~/.cache/ms-playwright + key: ${{ runner.os }}-playwright-${{ hashFiles('ipfs-webui/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-playwright- + # On cache miss: download browsers and install OS dependencies + - name: Install Playwright with dependencies + if: steps.playwright-cache.outputs.cache-hit != 'true' + run: npx playwright install --with-deps + working-directory: ipfs-webui + # On cache hit: only ensure OS dependencies are present (fast, idempotent) + - name: Install Playwright OS dependencies + if: steps.playwright-cache.outputs.cache-hit == 'true' + run: npx playwright install-deps + working-directory: ipfs-webui + # Cache test build output + - name: Cache test build + uses: actions/cache@v5 + id: test-build-cache + with: + path: ipfs-webui/build + key: ${{ runner.os }}-webui-build-${{ hashFiles('ipfs-webui/package-lock.json', 'ipfs-webui/src/**', 'ipfs-webui/public/**') }} + restore-keys: | + ${{ runner.os }}-webui-build- + - name: Build ipfs-webui@${{ steps.webui-ref.outputs.ref }} (state=${{ steps.webui-state.outputs.state }}) + if: steps.test-build-cache.outputs.cache-hit != 'true' run: npm run test:build working-directory: ipfs-webui - - name: Test ipfs-webui@main (state=${{ steps.state.outputs.state }}) E2E against the locally built Kubo binary + - name: Test ipfs-webui@${{ steps.webui-ref.outputs.ref }} (state=${{ steps.webui-state.outputs.state }}) E2E against the locally built Kubo binary run: npm run test:e2e env: IPFS_GO_EXEC: ${{ github.workspace }}/cmd/ipfs/ipfs working-directory: ipfs-webui + - name: Upload test artifacts on failure + if: failure() + uses: actions/upload-artifact@v6 + with: + name: webui-test-results + path: ipfs-webui/test-results/ + retention-days: 7