Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
b72f588
trigger workflow
weitingsun Mar 18, 2026
4094ec0
fix permission issue
weitingsun Mar 18, 2026
8e6eb30
[skip ci] Bump version number to 4061
metamaskbot Mar 18, 2026
8059703
test ota update
weitingsun Mar 18, 2026
35351ff
Merge branch 'release/test-runway-rc-ios-workflow' of github.com:Meta…
weitingsun Mar 18, 2026
7d64236
resolve if release tag does not exist
weitingsun Mar 18, 2026
552f6b0
fix no PR number found error
weitingsun Mar 18, 2026
76e0a6f
fix base branch issue
weitingsun Mar 18, 2026
93bd6ad
change version to 7.69.0
weitingsun Mar 18, 2026
f12eda7
trigger workflow
weitingsun Mar 18, 2026
e6bbbc9
fix(ci): pass ref to build.yml so RC build uses same branch as OTA check
weitingsun Mar 18, 2026
8d5ec32
Merge branch 'main' into wsun/create-runway-rc-ios-workflow
weitingsun Mar 18, 2026
967a8ed
Merge branch 'main' into wsun/create-runway-rc-ios-workflow
weitingsun Mar 19, 2026
9873c5d
add runway_android_rc_workflow.yml
weitingsun Mar 19, 2026
9298e1c
add upload to TestFlight job
weitingsun Mar 19, 2026
644f2fd
Merge branch 'wsun/create-runway-rc-ios-workflow' into release/test-r…
weitingsun Mar 19, 2026
e9e983c
revert ota version
weitingsun Mar 19, 2026
8f5c0eb
[skip ci] Bump version number to 4109
metamaskbot Mar 19, 2026
549c65a
use inputs.ref for version bump when source_branch is unset
weitingsun Mar 19, 2026
3d0dcb2
Merge branch 'wsun/create-runway-rc-ios-workflow' into release/test-r…
weitingsun Mar 19, 2026
a619555
Merge branch 'release/test-runway-rc-ios-workflow' of github.com:Meta…
weitingsun Mar 19, 2026
70cc2c5
[skip ci] Bump version number to 4110
metamaskbot Mar 19, 2026
97773fc
upload to internal TestFlight
weitingsun Mar 20, 2026
8c1a878
Merge branch 'wsun/create-runway-rc-ios-workflow' into release/test-r…
weitingsun Mar 20, 2026
41c93dd
Merge branch 'release/test-runway-rc-ios-workflow' of github.com:Meta…
weitingsun Mar 20, 2026
73503b1
Merge branch 'main' into wsun/create-runway-rc-ios-workflow
weitingsun Mar 20, 2026
9deb847
upload to internal group only
weitingsun Mar 20, 2026
45bfe83
Merge branch 'wsun/create-runway-rc-ios-workflow' into release/test-r…
weitingsun Mar 20, 2026
a63ef54
[skip ci] Bump version number to 4127
metamaskbot Mar 20, 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
12 changes: 6 additions & 6 deletions .agents/skills/e2e-test/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,10 @@ Step 5 → Iterate (fix → lint → run) until green

Documentation is split by **action**. Open only the reference that matches what you are doing.

| Action | File | When to open it |
| --------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| **Writing or updating a spec** | [references/writing-tests.md](references/writing-tests.md) | New spec file, spec structure, FixtureBuilder patterns, smoke/regression templates. |
| **Page Objects and selectors** | [references/page-objects.md](references/page-objects.md) | Create or update POM classes, selector/testId conventions, Matchers/Gestures/Assertions API. |
| **API and feature flag mocking** | [references/mocking.md](references/mocking.md) | testSpecificMock, setupRemoteFeatureFlagsMock, setupMockRequest, shared mock files. |
| Action | File | When to open it |
| --------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| **Writing or updating a spec** | [references/writing-tests.md](references/writing-tests.md) | New spec file, spec structure, FixtureBuilder patterns, smoke/regression templates. |
| **Page Objects and selectors** | [references/page-objects.md](references/page-objects.md) | Create or update POM classes, selector/testId conventions, Matchers/Gestures/Assertions API. |
| **API and feature flag mocking** | [references/mocking.md](references/mocking.md) | testSpecificMock, setupRemoteFeatureFlagsMock, setupMockRequest, shared mock files. |
| **MetaMetrics / analytics expectations** | [tests/docs/analytics-e2e.md](../../../tests/docs/analytics-e2e.md) | `analyticsExpectations` on `withFixtures`, declarative checks, presets in `tests/helpers/analytics/expectations/`. |
| **Running tests, debugging, fixing failures** | [references/running-tests.md](references/running-tests.md) | Build check, detox run commands, lint/tsc, common failures table, retry patterns, iteration loop. |
| **Running tests, debugging, fixing failures** | [references/running-tests.md](references/running-tests.md) | Build check, detox run commands, lint/tsc, common failures table, retry patterns, iteration loop. |
10 changes: 5 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ on:
type: boolean
default: false
source_branch:
description: 'Branch, tag, or SHA to build'
description: 'Branch, tag, or SHA for version bump and prepare checkout. When non-empty, takes precedence over ref.'
required: false
type: string
default: ''
ref:
description: 'Git ref to checkout when skip_version_bump is true. Defaults to the triggering event ref.'
description: 'Git ref (branch) to run the build against. Used as base-branch for version bump and for checkout when skip_version_bump is true. Defaults to the triggering event ref.'
required: false
type: string
default: ''
Expand Down Expand Up @@ -65,7 +65,7 @@ jobs:
contents: write
id-token: write
with:
base-branch: ${{ inputs.source_branch != '' && inputs.source_branch || github.ref_name }}
base-branch: ${{ inputs.source_branch != '' && inputs.source_branch || inputs.ref != '' && inputs.ref || github.ref_name }}
secrets:
PR_TOKEN: ${{ secrets.PR_TOKEN }}

Expand All @@ -80,12 +80,12 @@ jobs:
signing_aws_role: ${{ steps.config.outputs.signing_aws_role }}
signing_aws_secret: ${{ steps.config.outputs.signing_aws_secret }}
signing_android_keystore_path: ${{ steps.config.outputs.signing_android_keystore_path }}
checkout_ref_for_setup: ${{ !inputs.skip_version_bump && needs.update-build-version.outputs.commit-hash || (inputs.source_branch != '' && inputs.source_branch || github.ref_name) }}
checkout_ref_for_setup: ${{ !inputs.skip_version_bump && needs.update-build-version.outputs.commit-hash || (inputs.source_branch != '' && inputs.source_branch || inputs.ref != '' && inputs.ref || github.ref_name) }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ !inputs.skip_version_bump && needs.update-build-version.outputs.commit-hash || (inputs.source_branch != '' && inputs.source_branch || github.ref_name) }}
ref: ${{ !inputs.skip_version_bump && needs.update-build-version.outputs.commit-hash || (inputs.source_branch != '' && inputs.source_branch || inputs.ref != '' && inputs.ref || github.ref_name) }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
Expand Down
148 changes: 148 additions & 0 deletions .github/workflows/runway_android_rc_workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
##############################################################################################
#
# Runway Android RC Workflow
#
# Triggered from Runway to either:
# - Push an OTA update (when OTA_VERSION in app/constants/ota.ts line 9 is bumped), or
# - Build the mobile app (when there is no OTA version bump).
#
# When triggering workflow_dispatch, select the release branch (e.g. release/7.71.0).
#
##############################################################################################
name: Runway Android RC

on:
workflow_dispatch:
inputs:
ref:
description: 'Optional git ref (branch) to run against. Defaults to the branch selected in the UI.'
required: false
type: string

permissions:
contents: write # required by build.yml (update-build-version job)
pull-requests: read
actions: write
id-token: write # required by build.yml

jobs:
decide:
name: Check OTA version and resolve inputs
runs-on: ubuntu-latest
outputs:
ota_bump: ${{ steps.decide.outputs.ota_bump }}
base_ref: ${{ steps.decide.outputs.base_ref }}
ota_version: ${{ steps.decide.outputs.ota_version }}
pr_number: ${{ steps.resolve-pr.outputs.pr_number }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ inputs.ref || github.ref }}

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'

- name: Resolve PR number for current branch
id: resolve-pr
run: |
BRANCH="${{ inputs.ref || github.ref_name }}"
# Strip refs/heads/ if present
BRANCH="${BRANCH#refs/heads/}"
echo "Resolving PR for branch: $BRANCH (repo: $GITHUB_REPOSITORY)"

# Try same-repo head first, then owner:branch (required by API when listing pulls)
PR_NUMBER=$(gh pr list --repo "$GITHUB_REPOSITORY" --head "$BRANCH" --json number --jq '.[0].number' 2>/dev/null || echo "")
if [[ -z "$PR_NUMBER" ]]; then
PR_NUMBER=$(gh pr list --repo "$GITHUB_REPOSITORY" --head "$GITHUB_REPOSITORY_OWNER:$BRANCH" --json number --jq '.[0].number' 2>/dev/null || echo "")
fi

echo "pr_number=${PR_NUMBER}" >> "$GITHUB_OUTPUT"
echo "Branch: $BRANCH, PR number: ${PR_NUMBER:-none}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Decide OTA vs build
id: decide
run: |
set -e
# Version from package.json (e.g. 7.70.0) → base ref for OTA workflow is always v{VERSION}
VERSION=$(node -p "require('./package.json').version")
RELEASE_TAG="v${VERSION}"
echo "base_ref=${RELEASE_TAG}" >> "$GITHUB_OUTPUT"

# Extract OTA_VERSION from line 9 (format: export const OTA_VERSION: string = 'vX.Y.Z';)
extract_ota() { sed -n '9p' "$1" | sed "s/.*'\\([^']*\\)'.*/\1/"; }

# OTA_VERSION from current ref
CURRENT_OTA=$(extract_ota app/constants/ota.ts)
echo "ota_version=${CURRENT_OTA}" >> "$GITHUB_OUTPUT"

# Ref to compare against for detecting bump: use release tag if it exists, else main
if git rev-parse "$RELEASE_TAG" >/dev/null 2>&1; then
COMPARE_REF="$RELEASE_TAG"
BASE_OTA=$(git show "${COMPARE_REF}:app/constants/ota.ts" 2>/dev/null | sed -n '9p' | sed "s/.*'\\([^']*\\)'.*/\1/" || echo "")
else
COMPARE_REF="main"
BASE_OTA=$(git show "origin/main:app/constants/ota.ts" 2>/dev/null | sed -n '9p' | sed "s/.*'\\([^']*\\)'.*/\1/" || echo "")
echo "Release tag ${RELEASE_TAG} not found; comparing OTA_VERSION to ${COMPARE_REF} to detect bump"
fi

if [[ -n "$BASE_OTA" && "$CURRENT_OTA" != "$BASE_OTA" ]]; then
echo "ota_bump=true" >> "$GITHUB_OUTPUT"
echo "OTA_VERSION changed: $BASE_OTA -> $CURRENT_OTA → will trigger OTA update"
else
echo "ota_bump=false" >> "$GITHUB_OUTPUT"
echo "No OTA version bump (base: $BASE_OTA, current: $CURRENT_OTA) → will trigger build"
fi

trigger-ota:
name: Trigger OTA update
needs: decide
if: needs.decide.outputs.ota_bump == 'true'
runs-on: ubuntu-latest
steps:
- name: Validate PR number
run: |
if [[ -z "${{ needs.decide.outputs.pr_number }}" ]]; then
echo "::error::No PR found for this branch. OTA update requires a PR number."
echo "::error::If you ran the workflow manually (workflow_dispatch), select your release branch in the 'Use workflow from' dropdown (e.g. release/7.71.0), not main."
exit 1
fi
echo "Using PR #${{ needs.decide.outputs.pr_number }}"

- name: Trigger Push OTA Update workflow
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const ref = '${{ inputs.ref || github.ref_name }}'.replace(/^refs\/heads\//, '');
await github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'push-eas-update.yml',
ref: ref,
inputs: {
pr_number: '${{ needs.decide.outputs.pr_number }}',
base_branch: '${{ needs.decide.outputs.base_ref }}',
message: '${{ needs.decide.outputs.ota_version }}',
channel: 'rc',
platform: 'android'
}
});
core.notice(`Triggered Push OTA Update on ${ref} (PR #${{ needs.decide.outputs.pr_number }}, base: ${{ needs.decide.outputs.base_ref }}, message: ${{ needs.decide.outputs.ota_version }})`);

trigger-build:
name: Trigger build mobile app
needs: decide
if: needs.decide.outputs.ota_bump != 'true'
uses: ./.github/workflows/build.yml
with:
build_name: main-rc
platform: android
skip_version_bump: false
ref: ${{ inputs.ref || github.ref_name }}
secrets: inherit
Loading
Loading