Files
purchases-ios/Examples
Facundo Menzella 278f3d2d7b other(workflows): maestro flows for workflow experiments (#7805)
* other(workflows): maestro flows for workflow experiments

Adds an app_user_id launch argument so enrollment is deterministic per run. The
backend resolves the experiment combo from that id, so pinning it makes a run
repeatable.

Two flows against a workflow whose third step is an experiment. One asserts a
started experiment lands on a variant paywall, the other asserts an experiment
that was never started serves the holdout. Both exist because khepri was
publishing the experiment step unpruned, so the SDK walked into a step with no
screen and rendered nothing.

* fix the flows against a real run

The Continue buttons are labelled Continue 1/3 and 2/3, and Maestro matches text
in full, so plain Continue never matched. Env variables also do not interpolate
inside launchApp arguments, so the offering and app user id are inline now.

Verified on the simulator: four runs of the assigns-variant flow, all green, all
resolving variant A for the same app user id.

* assert the variant, and hold the holdout flow back

The generic Restore Purchases assertion did not identify a variant, and the two
conditional screenshot blocks assert nothing, so a wrong paywall (including the
SDK default fallback, which also shows a restore control) would have passed.
Match on both variant titles instead.

Exact Continue 1/3 and 2/3 labels now, matching the sibling flows.

The holdout flow moves to a follow-up: it needs a workflow whose experiment was
never started, and fastlane runs the whole workflows directory, so shipping it
against a missing offering would fail the all-tasks-passed gate.

* add the holdout flow

Against [experiment-unstarted] (offering 'experiments unstarted'), a duplicate
whose experiment was never started. The backend collapses the experiment step to
its fallback, so the served graph is screen 1 to screen 2 to variant A and the
variant B step is pruned out.

Three green runs. This workflow's buttons are plain Continue, not the numbered
labels the other one uses.
2026-09-22 17:46:18 +02:00
..
2026-09-18 12:04:12 +02:00