mirror of
https://github.com/RevenueCat/purchases-ios
synced 2026-11-09 22:35:56 +05:45
* 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.