Skip to content

chore: capacitor integration tests#976

Merged
stevensJourney merged 30 commits into
mainfrom
capacitor-tests
May 27, 2026
Merged

chore: capacitor integration tests#976
stevensJourney merged 30 commits into
mainfrom
capacitor-tests

Conversation

@stevensJourney

@stevensJourney stevensJourney commented May 25, 2026

Copy link
Copy Markdown
Collaborator

The work here is inspired and based off the Tauri integration tests added by @simolus3 . Reference

This PR adds integration tests for the Capacitor SDK.

For context, most Capacitor plugins include an example-app folder which is a basic Capacitor App used to verify the plugin compiles correctly for Android and iOS.

This PR uses the example-app as a code runner which loads the Vitest Browser-mode server's URL as the source of the Capacitor web content.

We use a small trick where the example-app's Capacitor config is a TypeScript (could also be JavaScript) file which sets the app's web content source to the value of an environment variable. This means that the app can be started with a dynamic web contents source.

The Vitest browser mode integration then builds the Capacitor app and starts it by providing the appropriate URL for the Vitest test suite.

This PR ports the React Native tests from tools/powersynctests for Capacitor. The test suite essentially only handles basic query operations and Capacitor specific logic - like ensuring concurrency. AI usage disclaimer - the tests were ported using Codex GPT 5.5.

Bug fix

These unit tests actually exposed a bug in the current code! The executeBatch method was broken on iOS. This adds a fix.

@changeset-bot

changeset-bot Bot commented May 25, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: b53c139

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@powersync/capacitor Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Base automatically changed from capacitor to main May 25, 2026 09:07
@stevensJourney stevensJourney marked this pull request as ready for review May 25, 2026 13:18
@stevensJourney stevensJourney requested a review from simolus3 May 25, 2026 13:18
simolus3
simolus3 previously approved these changes May 26, 2026

@simolus3 simolus3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ran the integration tests in an iOS simulator, it's definitely cool to see the vitest UI there 👍

Perhaps also update package/capacitor/example-app/README.md to mention that the app serves as an integration test host?

Comment thread .github/workflows/test-simulators.yaml Outdated
Comment thread .github/actions/setup-android-emulator/action.yaml Outdated
Comment thread packages/capacitor/tests/setup/capacitor.ts Outdated
Co-authored-by: Simon Binder <simon@journeyapps.com>
@stevensJourney stevensJourney merged commit 7b38faa into main May 27, 2026
@stevensJourney stevensJourney deleted the capacitor-tests branch May 27, 2026 07:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants