Skip to content

feat: Add more features and tests to MF2 test app - #1514

Open
MrMuzyk wants to merge 26 commits into
callstack:mainfrom
MrMuzyk:add-more-features-to-mf2-testing-app
Open

MrMuzyk wants to merge 26 commits into
callstack:mainfrom
MrMuzyk:add-more-features-to-mf2-testing-app

Conversation

@MrMuzyk

@MrMuzyk MrMuzyk commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Grows apps/tester-federation-v2 into the app that covers Re.Pack's bundling and runtime surface on a device, so checking a change means booting one app instead of several. Six new feature screens (NativeWind, Reanimated, runtime events, async chunk, remote chunk, mini-app install), a FEATURES.ts registry driving Home, typed against the navigator’s routes, and one e2e spec per feature replacing smoke.e2e.ts — every spec owns one distinct way to fail.

  • Asset rules split into four explicit rules (90 KB inline gate, svgr for .svg, localAssets always emitted, inlineAssets always inlined), and the Host Assets spec asserts each one produces what it claims, including the emitted URI actually served (fetch → 200 built from the on-screen URI, never hardcoded).
  • NativeWindPlugin and ReanimatedPlugin wired into both rspack and webpack configs (kept in parity), with the NativeWind toolchain and a host-scoped JSX retag in babel.
  • extraChunks gains a local rule for the async chunk (/^host-async-local$/ — an unanchored pattern also matches numeric chunk ids).
  • The runtime-event counters tap only the non-owning ScriptManager hooks: resolve/load are bail hooks, so a counting tap would replace the built-in loop instead of observing it.
  • Boot anchor (home-screen after app.open()) asserts at 30 s: app.open() returns when the window draws, and a cold JS boot on the CI emulator needs more than the 5 s default. Two more overrides, both with a named cause in design.md: 45 s on miniapp-gallery, 30 s on pipeline: settled.

agent_context/e2e-oct2026/design.md documents layout, conventions and the traps worth knowing before editing this app.

Test plan

Demo video:

mf2-upgraded-preview.mp4

CI: — Android + iOS, artifacts carry junit, screenshots and dev-server logs on failure.

Locally (boot an emulator/simulator first; Node ≥ 24.8):

pnpm start:hostapp    # 8081
pnpm start:miniapp    # 8082
E2E_DEVICE=<name> pnpm exec e2e run --target ios   # or --target android

The Debug build loads JS from the two dev servers, so both must stay up. Warm the platform bundle on a fresh server before the first run (curl the index.bundle URL the workflow uses), otherwise the cold compile eats the boot anchor.

Every spec has one named failure mode — the table in design.md says what a red line on each one means.

Webpack config is maintained in parity but the CI lane runs rspack only; USE_WEBPACK=1 pnpm start:hostapp runs the suite against it.

@vercel

vercel Bot commented Oct 23, 2026

Copy link
Copy Markdown

@MrMuzyk is attempting to deploy a commit to the Callstack Team on Vercel.

A member of the Team first needs to authorize it.

@changeset-bot

changeset-bot Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 66a9047

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

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

@MrMuzyk
MrMuzyk marked this pull request as ready for review October 30, 2026 15:52

This branch has not been deployed

No deployments
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.

1 participant