Skip to content

chore(deps): bump the go_modules group across 3 directories with 1 update #4568

chore(deps): bump the go_modules group across 3 directories with 1 update

chore(deps): bump the go_modules group across 3 directories with 1 update #4568

name: Build + Test v3
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches:
- master
paths:
- 'v3/**'
- 'webview2/**'
- 'go.work'
- 'go.work.sum'
- '.github/workflows/build-and-test-v3.yml'
pull_request_review:
types: [submitted]
branches:
- master
jobs:
test_js:
name: Run JS Tests
runs-on: ubuntu-latest
if: github.base_ref == 'master'
strategy:
matrix:
node-version: [20.x]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Cache npm packages
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-npm-runtime-${{ hashFiles('v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-runtime-
- name: Install dependencies
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: |
npm ci
npx --yes esbuild@latest --version
- name: Clean build artifacts
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: npm run clean
- name: Type-check runtime
working-directory: v3
run: task runtime:check
- name: Test runtime
working-directory: v3
run: task runtime:test
- name: Check that the bundled runtime builds
working-directory: v3
run: task runtime:build
- name: Check that the npm package builds
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: npm run build
- name: Pack runtime for template tests
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
run: npm pack
- name: Store runtime build artifacts
uses: actions/upload-artifact@v4
with:
name: runtime-build-artifacts
path: |
v3/internal/runtime/desktop/@wailsio/runtime/dist/
v3/internal/runtime/desktop/@wailsio/runtime/types/
v3/internal/runtime/desktop/@wailsio/runtime/tsconfig.tsbuildinfo
- name: Store runtime package
uses: actions/upload-artifact@v4
with:
name: runtime-package
path: v3/internal/runtime/desktop/@wailsio/runtime/*.tgz
test_go:
name: Run Go Tests v3
needs: [test_js]
runs-on: ${{ matrix.os }}
if: github.base_ref == 'master'
timeout-minutes: 25
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
go-version: [1.25]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install linux dependencies (GTK4 default)
uses: awalsh128/cache-apt-pkgs-action@latest
if: matrix.os == 'ubuntu-latest'
with:
packages: libgtk-4-dev libwebkitgtk-6.0-dev libwayland-dev build-essential pkg-config xvfb x11-xserver-utils at-spi2-core xdg-desktop-portal-gtk
version: 1.0
- name: Install linux dependencies (GTK3 legacy)
uses: awalsh128/cache-apt-pkgs-action@latest
if: matrix.os == 'ubuntu-latest'
with:
packages: libgtk-3-dev libwebkit2gtk-4.1-dev
version: 1.0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
cache: true
cache-dependency-path: |
v3/go.sum
webview2/go.sum
go.work.sum
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Retrieve runtime build artifacts
uses: actions/download-artifact@v4
with:
name: runtime-build-artifacts
path: v3/internal/runtime/desktop/@wailsio/runtime/
- name: Build Examples (GTK4 default)
working-directory: v3
run: |
echo "Starting example compilation tests (GTK4 default)..."
task test:examples
echo "Example compilation tests (GTK4 default) completed successfully"
- name: Build Examples (GTK3 legacy)
if: matrix.os == 'ubuntu-latest'
working-directory: v3
run: |
echo "Starting example compilation tests (GTK3 legacy)..."
BUILD_TAGS=gtk3 task test:examples
echo "Example compilation tests (GTK3 legacy) completed successfully"
- name: Run tests (mac)
if: matrix.os == 'macos-latest'
env:
CGO_LDFLAGS: -framework UniformTypeIdentifiers -mmacosx-version-min=10.13
working-directory: v3
run: go test -v -timeout 10m ./...
- name: Run tests (windows)
if: matrix.os == 'windows-latest'
working-directory: v3
run: go test -v -timeout 10m ./...
- name: Run tests (ubuntu) - GTK4 default
if: matrix.os == 'ubuntu-latest'
working-directory: v3
# Skip service tests that hang in CI due to GTK4 display requirements
run: dbus-run-session -- xvfb-run --auto-servernum --server-args="-screen 0 1024x768x24" go test -v -timeout 10m -skip "TestService" ./...
- name: Run tests (ubuntu) - GTK3 legacy
if: matrix.os == 'ubuntu-latest'
working-directory: v3
run: dbus-run-session -- xvfb-run --auto-servernum --server-args="-screen 0 1024x768x24" go test -tags gtk3 -v -timeout 10m ./...
- name: Typecheck binding generator output
working-directory: v3
run: task generator:test:check
cleanup:
name: Cleanup build artifacts
if: always()
needs: [test_js, test_go, test_templates]
runs-on: ubuntu-latest
steps:
- uses: geekyeggo/delete-artifact@v5
with:
name: |
runtime-build-artifacts
runtime-package
failOnError: false
test_templates:
name: Test Templates
needs: [test_js, test_go]
runs-on: ${{ matrix.os }}
if: github.base_ref == 'master'
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
template:
- vanilla
- vanilla-js
- react
- react-js
- vue
- vue-js
- svelte
- svelte-js
go-version: [1.25]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install linux dependencies (GTK4 default)
uses: awalsh128/cache-apt-pkgs-action@latest
if: matrix.os == 'ubuntu-latest'
with:
packages: libgtk-4-dev libwebkitgtk-6.0-dev libwayland-dev build-essential pkg-config
version: 1.0
- name: Install linux dependencies (GTK3 legacy)
uses: awalsh128/cache-apt-pkgs-action@latest
if: matrix.os == 'ubuntu-latest'
with:
packages: libgtk-3-dev libwebkit2gtk-4.1-dev
version: 1.0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
cache: true
cache-dependency-path: |
v3/go.sum
webview2/go.sum
go.work.sum
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build Wails3 CLI
working-directory: v3
run: |
task install
wails3 doctor
- name: Download runtime package
uses: actions/download-artifact@v4
with:
name: runtime-package
path: wails-runtime-temp
- name: Generate template '${{ matrix.template }}' (GTK4 default)
shell: bash
run: |
# Get absolute path - use pwd -W on Windows for native paths, pwd elsewhere
if [[ "$RUNNER_OS" == "Windows" ]]; then
RUNTIME_TGZ="$(cd wails-runtime-temp && pwd -W)/$(ls wails-runtime-temp/*.tgz | xargs basename)"
else
RUNTIME_TGZ="$(cd wails-runtime-temp && pwd)/$(ls wails-runtime-temp/*.tgz | xargs basename)"
fi
mkdir -p ./test-${{ matrix.template }}
cd ./test-${{ matrix.template }}
wails3 init -n ${{ matrix.template }} -t ${{ matrix.template }}
cd ${{ matrix.template }}/frontend
# Replace @wailsio/runtime version with local tarball
npm pkg set dependencies.@wailsio/runtime="file://$RUNTIME_TGZ"
cd ..
# Register the generated project in the workspace so Go 1.25 workspace
# mode does not reject packages in a module not listed in go.work.
go work use .
wails3 build
# GTK3 legacy template builds are covered by the Go example compilation tests above.
build_results:
if: ${{ always() }}
runs-on: ubuntu-latest
name: v3 Build Results
needs: [test_go, test_js, test_templates]
steps:
- run: |
go_result="${{ needs.test_go.result }}"
js_result="${{ needs.test_js.result }}"
templates_result="${{ needs.test_templates.result }}"
if [[ $go_result == "success" || $go_result == "skipped" ]] && \
[[ $js_result == "success" || $js_result == "skipped" ]] && \
[[ $templates_result == "success" || $templates_result == "skipped" ]]; then
echo "All required jobs succeeded or were skipped"
exit 0
else
echo "One or more required jobs failed"
exit 1
fi