Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
3443d47
chore(release): @wdio/electron-service, @wdio/electron-cdp-bridge, @w…
github-actions[bot] Dec 28, 2025
de08971
feat(electron): port logging improvements to electron service (#57)
goosewobbler Dec 29, 2025
b7a76f1
chore: standardise published files
goosewobbler Dec 30, 2025
afe4460
chore: standardise published files, add LICENSE
goosewobbler Dec 30, 2025
93cfe7b
docs: add cdp bridge readme
goosewobbler Dec 30, 2025
109c979
chore: update turborepo
goosewobbler Dec 30, 2025
95833e0
chore: update deps
goosewobbler Dec 30, 2025
5e4ac4d
chore: formatting fixes
goosewobbler Dec 30, 2025
17d93e7
chore: update import
goosewobbler Dec 30, 2025
7f92024
chore: fix linting errors
goosewobbler Dec 30, 2025
cb5a9e9
test: update for vitest v4
goosewobbler Dec 30, 2025
4afab22
chore: add deps
goosewobbler Dec 30, 2025
b947599
chore: update electron-nightly
goosewobbler Dec 30, 2025
e5be1c3
test: more vitest v4 fixes
goosewobbler Dec 30, 2025
61ce4ec
test: fix package test workspace resolution
goosewobbler Dec 30, 2025
d154530
fix: update for vitest fn
goosewobbler Dec 30, 2025
9798d52
chore: fix deps
goosewobbler Dec 30, 2025
bff3074
chore: fix ts error
goosewobbler Dec 30, 2025
9dab1eb
chore: revert workspace shenanigans
goosewobbler Dec 30, 2025
2600d0c
chore: disable `useArrowFunction` for units
goosewobbler Dec 30, 2025
c8a08eb
chore: use correct biome category
goosewobbler Dec 30, 2025
7bbf836
test: fix vitest usage
goosewobbler Dec 30, 2025
350489b
chore: ignore `useArrowFunction` for vitest.fn invocation
goosewobbler Dec 30, 2025
38f3bdd
test: fix remaining unit issues
goosewobbler Dec 30, 2025
a9bed1d
chore: downgrade `read-package-up`
goosewobbler Dec 30, 2025
f7090c9
test: fix windows path issues
goosewobbler Dec 30, 2025
ea14973
fix: mock creation
goosewobbler Dec 31, 2025
913823e
fix: mock E2Es
goosewobbler Jan 1, 2026
d2ee92b
fix: mockRestore should restore original func behaviour
goosewobbler Jan 1, 2026
6cabde0
fix: windows path corruption
goosewobbler Jan 1, 2026
9378bab
test: update expectations for correct behaviour
goosewobbler Jan 1, 2026
863ac1c
feat: deeplink testing (#60)
goosewobbler Jan 5, 2026
aac51d3
chore: update pnpm & node
goosewobbler Jan 5, 2026
078704d
Resolve merge conflict in release-native.yml workflow
goosewobbler Dec 27, 2025
5cd972a
chore: improve mac CI testing
goosewobbler Jan 5, 2026
9ca6f01
chore: update app names
goosewobbler Jan 5, 2026
fd82c99
fix(ci): update release pipeline
christian-bromann Dec 27, 2025
5f4e1fd
chore: update executable name
goosewobbler Jan 5, 2026
56dcd43
chore: fix lipo output parsing
goosewobbler Jan 5, 2026
f348520
chore: update app name for windows
goosewobbler Jan 5, 2026
1559324
chore: fix trusted publishing
goosewobbler Jan 6, 2026
f10982f
chore: configure git to use token authentication for pushes
goosewobbler Jan 6, 2026
f74921a
Merge branch 'main' into feat/electron-service-10.0.0
goosewobbler Jan 6, 2026
d7083d6
chore: add docs back to package
goosewobbler Jan 6, 2026
65bd11e
chore: add write perm for version commits & tags
goosewobbler Jan 6, 2026
c4e7b2a
chore(release): @wdio/electron-service, @wdio/electron-cdp-bridge, @w…
github-actions[bot] Jan 6, 2026
eeab3e9
chore: remove publishConfig
goosewobbler Jan 6, 2026
09d8f58
refactor: clean up deeplink timeout, remove tests
goosewobbler Jan 6, 2026
4604fdc
feat: add support for electron-builder custom config files (#65)
goosewobbler Jan 7, 2026
654341e
docs: add badges
goosewobbler Jan 7, 2026
cc0ff4e
chore: update puppeteer
goosewobbler Jan 7, 2026
3b22b72
chore: update deps
goosewobbler Jan 7, 2026
48c1b69
chore: add `linux/arm` package tests
goosewobbler Jan 7, 2026
f8f7e99
chore: fix package sources for tauri
goosewobbler Jan 7, 2026
09743b4
chore: extend path creation for `linux/arm64`
goosewobbler Jan 7, 2026
2132842
chore: fix heredoc issues
goosewobbler Jan 7, 2026
215af6b
chore: fix naming conflicts
goosewobbler Jan 7, 2026
6a13b18
chore: use packed webdriverio & puppeteer
goosewobbler Jan 8, 2026
7a9eede
chore: update wdio
goosewobbler Jan 8, 2026
04d9476
debug: add debug and update
goosewobbler Jan 8, 2026
65e268b
chore: enable logs for package tests
goosewobbler Jan 8, 2026
5b49869
chore: add package update script for testing
goosewobbler Jan 8, 2026
9ba1b0b
chore: fix logfile naming
goosewobbler Jan 8, 2026
58bb5c8
fix: update logging and logic
goosewobbler Jan 8, 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
24 changes: 21 additions & 3 deletions .github/workflows/_ci-build-tauri-apps.reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,32 @@ jobs:
uses: dtolnay/rust-toolchain@stable

# Install Tauri dependencies on Linux
- name: 🔧 Fix ARM64 Package Sources (Linux)
if: runner.os == 'Linux' && runner.arch == 'ARM64'
shell: bash
run: |
echo "Fixing ARM64 package sources for Ubuntu..."
# Add proper arm64 sources for jammy
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null

# Ensure default sources only use amd64
sudo sed -i -e 's/^deb http/deb [arch=amd64] http/' /etc/apt/sources.list
sudo sed -i -e 's/^deb mirror/deb [arch=amd64] mirror/' /etc/apt/sources.list

sudo apt-get update

- name: 🦀 Install Tauri Dependencies (Linux)
if: runner.os == 'Linux'
shell: bash
run: |
echo "Installing Tauri dependencies for Linux..."
sudo tee -a /etc/apt/sources.list > /dev/null <<EOT
deb http://archive.ubuntu.com/ubuntu jammy main universe
EOT
# Only add archive.ubuntu.com for amd64, arm64 sources are handled above
if [ "$(uname -m)" != "aarch64" ]; then
echo "deb http://archive.ubuntu.com/ubuntu jammy main universe" | sudo tee -a /etc/apt/sources.list > /dev/null
fi
sudo apt-get update
# Install build dependencies only (no runtime libraries needed for compilation)
sudo apt-get install -y \
Expand Down
24 changes: 21 additions & 3 deletions .github/workflows/_ci-build-tauri-e2e-app.reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,32 @@ jobs:
- name: 🦀 Install Rust Toolchain
uses: dtolnay/rust-toolchain@stable

- name: 🔧 Fix ARM64 Package Sources (Linux)
if: runner.os == 'Linux' && runner.arch == 'ARM64'
shell: bash
run: |
echo "Fixing ARM64 package sources for Ubuntu..."
# Add proper arm64 sources for jammy
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null

# Ensure default sources only use amd64
sudo sed -i -e 's/^deb http/deb [arch=amd64] http/' /etc/apt/sources.list
sudo sed -i -e 's/^deb mirror/deb [arch=amd64] mirror/' /etc/apt/sources.list

sudo apt-get update

- name: 🦀 Install Tauri Dependencies (Linux)
if: runner.os == 'Linux'
shell: bash
run: |
echo "Installing Tauri dependencies for Linux..."
sudo tee -a /etc/apt/sources.list > /dev/null <<EOT
deb http://archive.ubuntu.com/ubuntu jammy main universe
EOT
# Only add archive.ubuntu.com for amd64, arm64 sources are handled above
if [ "$(uname -m)" != "aarch64" ]; then
echo "deb http://archive.ubuntu.com/ubuntu jammy main universe" | sudo tee -a /etc/apt/sources.list > /dev/null
fi
sudo apt-get update
sudo apt-get install -y \
build-essential \
Expand Down
28 changes: 23 additions & 5 deletions .github/workflows/_ci-build-tauri-package-app.reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,32 @@ jobs:
- name: 🦀 Install Rust Toolchain
uses: dtolnay/rust-toolchain@stable

- name: 🔧 Fix ARM64 Package Sources (Linux)
if: runner.os == 'Linux' && runner.arch == 'ARM64'
shell: bash
run: |
echo "Fixing ARM64 package sources for Ubuntu..."
# Add proper arm64 sources for jammy
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null

# Ensure default sources only use amd64
sudo sed -i -e 's/^deb http/deb [arch=amd64] http/' /etc/apt/sources.list
sudo sed -i -e 's/^deb mirror/deb [arch=amd64] mirror/' /etc/apt/sources.list

sudo apt-get update

- name: 🦀 Install Tauri Dependencies (Linux)
if: runner.os == 'Linux'
shell: bash
run: |
echo "Installing Tauri dependencies for Linux..."
sudo tee -a /etc/apt/sources.list > /dev/null <<EOT
deb http://archive.ubuntu.com/ubuntu jammy main universe
EOT
# Only add archive.ubuntu.com for amd64, arm64 sources are handled above
if [ "$(uname -m)" != "aarch64" ]; then
echo "deb http://archive.ubuntu.com/ubuntu jammy main universe" | sudo tee -a /etc/apt/sources.list > /dev/null
fi
sudo apt-get update
sudo apt-get install -y \
build-essential \
Expand Down Expand Up @@ -324,8 +342,8 @@ jobs:
id: upload-archive
uses: ./.github/workflows/actions/upload-archive
with:
name: tauri-package-app-${{ runner.os }}
output: tauri-package-app-${{ runner.os }}/artifact.zip
name: tauri-package-app-${{ runner.os }}-${{ runner.arch == 'ARM64' && 'ARM64' || 'x64' }}
output: tauri-package-app-${{ runner.os }}-${{ runner.arch == 'ARM64' && 'ARM64' || 'x64' }}/artifact.zip
paths: fixtures/package-tests/tauri-app/src-tauri/target
cache_key_prefix: tauri-package-app
retention_days: '90'
Expand Down
24 changes: 21 additions & 3 deletions .github/workflows/_ci-e2e-tauri.reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,32 @@ jobs:
# Install Tauri runtime dependencies on Linux (apps are pre-built, only need runtime libs)
# Minimum requirements per Tauri docs: libwebkit2gtk-4.1-0, libgtk-3-0, libappindicator3-1
# Additional libraries may be pulled in as transitive dependencies
- name: 🔧 Fix ARM64 Package Sources (Linux)
if: runner.os == 'Linux' && runner.arch == 'ARM64'
shell: bash
run: |
echo "Fixing ARM64 package sources for Ubuntu..."
# Add proper arm64 sources for jammy
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64-jammy.list > /dev/null

# Ensure default sources only use amd64
sudo sed -i -e 's/^deb http/deb [arch=amd64] http/' /etc/apt/sources.list
sudo sed -i -e 's/^deb mirror/deb [arch=amd64] mirror/' /etc/apt/sources.list

sudo apt-get update

- name: 🦀 Install Tauri Runtime Dependencies (Linux)
if: runner.os == 'Linux'
shell: bash
run: |
echo "Installing Tauri runtime dependencies for Linux..."
sudo tee -a /etc/apt/sources.list > /dev/null <<EOT
deb http://archive.ubuntu.com/ubuntu jammy main universe
EOT
# Only add archive.ubuntu.com for amd64, arm64 sources are handled above
if [ "$(uname -m)" != "aarch64" ]; then
echo "deb http://archive.ubuntu.com/ubuntu jammy main universe" | sudo tee -a /etc/apt/sources.list > /dev/null
fi
sudo apt-get update
sudo apt-get --fix-broken install -y || true

Expand Down
75 changes: 75 additions & 0 deletions .github/workflows/_ci-e2e.reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,81 @@ jobs:
shell: bash
run: pnpm exec turbo run ${{ inputs.build-command }} ${{ steps.gen-build.outputs.result }} --only --parallel

# Setup protocol handlers for deeplink testing
# Required for Windows and Linux to properly handle testapp:// protocol
- name: 🔗 Setup Protocol Handlers
if: contains(inputs.scenario, 'builder') || contains(inputs.scenario, 'forge')
shell: bash
run: |
echo "=== Protocol Handler Setup ==="
echo "Runner OS: $RUNNER_OS"
echo "Working directory: $(pwd)"
echo "Scenario: ${{ inputs.scenario }}"
echo ""

# Determine which app(s) to set up based on scenario
APPS=()
if [[ "${{ inputs.scenario }}" == *"builder"* ]]; then
APPS+=("electron-builder")
fi
if [[ "${{ inputs.scenario }}" == *"forge"* ]]; then
APPS+=("electron-forge")
fi

for APP in "${APPS[@]}"; do
echo "Setting up protocol handler for: $APP"

if [ "$RUNNER_OS" == "Windows" ]; then
echo "Setting up Windows protocol handler..."

if [ "$APP" == "electron-builder" ]; then
echo "Checking if dist directory exists..."
ls -la ./fixtures/e2e-apps/$APP/dist/ || echo "dist/ not found"
else
echo "Checking if out directory exists..."
ls -la ./fixtures/e2e-apps/$APP/out/ || echo "out/ not found"
fi
echo ""

powershell -ExecutionPolicy Bypass -File ./fixtures/e2e-apps/$APP/scripts/setup-protocol-handler.ps1
EXIT_CODE=$?

if [ $EXIT_CODE -ne 0 ]; then
echo "Error: Protocol handler setup failed for $APP with exit code $EXIT_CODE"
exit 1
fi

elif [ "$RUNNER_OS" == "Linux" ]; then
echo "Setting up Linux protocol handler..."

if [ "$APP" == "electron-builder" ]; then
echo "Checking if dist directory exists..."
ls -la ./fixtures/e2e-apps/$APP/dist/ || echo "dist/ not found"
else
echo "Checking if out directory exists..."
ls -la ./fixtures/e2e-apps/$APP/out/ || echo "out/ not found"
fi
echo ""

chmod +x ./fixtures/e2e-apps/$APP/scripts/setup-protocol-handler.sh
./fixtures/e2e-apps/$APP/scripts/setup-protocol-handler.sh
EXIT_CODE=$?

if [ $EXIT_CODE -ne 0 ]; then
echo "Error: Protocol handler setup failed for $APP with exit code $EXIT_CODE"
exit 1
fi

else
echo "macOS: Protocol handlers are registered by the app itself via setAsDefaultProtocolClient"
echo "No external setup needed - the app registers on first launch"
fi

echo ""
done

echo "=== Protocol Handler Setup Complete ==="

# Dynamically generate the test commands to run
# This handles both single and multiple scenarios
- name: 🪄 Generate Test Execution Plan
Expand Down
18 changes: 15 additions & 3 deletions .github/workflows/_ci-package.reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,8 @@ jobs:
if: inputs.service == 'tauri' || inputs.service == 'both'
uses: ./.github/workflows/actions/download-archive
with:
name: tauri-package-app-${{ runner.os }}
path: tauri-package-app-${{ runner.os }}
name: tauri-package-app-${{ runner.os }}-${{ runner.arch == 'ARM64' && 'ARM64' || 'x64' }}
path: tauri-package-app-${{ runner.os }}-${{ runner.arch == 'ARM64' && 'ARM64' || 'x64' }}
filename: artifact.zip
cache_key_prefix: tauri-package-app
exact_cache_key: ${{ inputs.tauri_cache_key || '' }}
Expand Down Expand Up @@ -190,15 +190,27 @@ jobs:
xvfb-run -a pnpm run test:package:tauri -- --skip-build
else
pnpm run test:package:tauri -- --skip-build
fi
fi
fi
;;
*)
echo "Invalid service: ${{ inputs.service }}"
exit 1
;;
esac

# Upload logs as artifacts for later analysis (same as E2E tests)
# This helps debug issues without cluttering the GitHub Actions console
- name: 📦 Upload Package Test Logs
if: always()
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: package-test-logs-${{ inputs.os }}-${{ inputs.service }}-${{ inputs.module-type || 'default' }}-${{ github.run_id }}-${{ github.run_attempt }}
path: logs/package-tests/*.log
retention-days: 90
if-no-files-found: warn

# Provide an interactive debugging session on failure
# This allows manual investigation of the environment
- name: 🐛 Debug Build on Failure
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/_release-prepare.reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,10 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
node-version: '24'

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.26.2

- name: Calculate version information
id: calculate_versions
Expand Down
12 changes: 9 additions & 3 deletions .github/workflows/_release-publish.reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ on:
github_bot_token:
description: 'GitHub token for authentication'
required: true
# npm_token removed - now using OIDC trusted publishing
deploy_key:
description: 'SSH deploy key for pushing to the repository'
required: true
Expand All @@ -73,6 +74,9 @@ on:
jobs:
publish:
runs-on: ubuntu-latest
permissions:
id-token: write # Required for OIDC trusted publishing
contents: write # Required for pushing commits and tags
outputs:
service_release_tag: ${{ steps.collect_tags.outputs.service_release_tag }}
shared_release_tags: ${{ steps.collect_tags.outputs.shared_release_tags }}
Expand All @@ -88,12 +92,10 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
node-version: '24'

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.26.2

- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand Down Expand Up @@ -124,11 +126,15 @@ jobs:
if: ${{ !inputs.dry_run }}
run: |
pnpm config set registry "https://registry.npmjs.org/"
# Note: Authentication now handled via OIDC trusted publishing
# No token configuration needed - npm will use OIDC tokens automatically

- name: Configure Git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
# Configure git to use token authentication for pushes
git remote set-url origin https://x-access-token:${{ secrets.github_bot_token }}@github.com/webdriverio/desktop-mobile-testing.git

# PHASE 1: Version shared packages (if changed) with their specific bump types
- name: Version shared packages
Expand Down
Loading
Loading