Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: improved way to trigger mmi e2e tests #27932

Merged
merged 38 commits into from
Oct 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
3211a46
feat: improved way to trigger mmi e2e tests
albertolive Oct 17, 2024
fee43b2
chore: wip
albertolive Oct 17, 2024
f072290
chore: wip
albertolive Oct 17, 2024
0a2d158
chore: wip
albertolive Oct 17, 2024
137f744
chore: wip
albertolive Oct 17, 2024
c135693
chore: wip
albertolive Oct 17, 2024
08ffde2
chore: fix
albertolive Oct 18, 2024
1f24442
chore: wip
albertolive Oct 18, 2024
a950217
chore: wip
albertolive Oct 18, 2024
2ef232c
chore: wip
albertolive Oct 18, 2024
a16b52f
chore: wip
albertolive Oct 18, 2024
450ac7b
chore: wip
albertolive Oct 18, 2024
5aa9989
chore: wip
albertolive Oct 18, 2024
9030d9b
test
albertolive Oct 18, 2024
4a1212b
test
albertolive Oct 18, 2024
9d12890
test
albertolive Oct 18, 2024
784d9f1
test
albertolive Oct 18, 2024
b589bad
test
albertolive Oct 18, 2024
fb05163
test
albertolive Oct 18, 2024
d07712f
test
albertolive Oct 18, 2024
ba6e617
test
albertolive Oct 18, 2024
2eeeb2b
test
albertolive Oct 18, 2024
31f32de
test
albertolive Oct 18, 2024
d6676f1
test
albertolive Oct 18, 2024
97cfb4f
test
albertolive Oct 18, 2024
715ab32
test
albertolive Oct 18, 2024
a42b5ad
test
albertolive Oct 18, 2024
2334702
test
albertolive Oct 18, 2024
4cd355b
chore: wip
albertolive Oct 18, 2024
a3eb192
test
albertolive Oct 18, 2024
fcc2dc1
Merge branch 'develop' into improve-mmi-e2e-trigger
albertolive Oct 18, 2024
863931b
fix: improved message
albertolive Oct 18, 2024
6b1d11f
Merge branch 'improve-mmi-e2e-trigger' of https://github.com/MetaMask…
albertolive Oct 18, 2024
99bb5c2
fix: improved code
albertolive Oct 18, 2024
faf540d
chore: reverted code
albertolive Oct 18, 2024
8844e35
fix: Improve MMI test trigger handling in CI
albertolive Oct 22, 2024
5a54879
Merge branch 'develop' into improve-mmi-e2e-trigger
albertolive Oct 22, 2024
e262903
Merge branch 'develop' into improve-mmi-e2e-trigger
albertolive Oct 23, 2024
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
75 changes: 28 additions & 47 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,15 @@ aliases:
cat ${HOME}/project/.circleci/scripts/enable-vnc.sh >> ~/.bashrc
fi

# Check if MMI Optional tests should run
- &check-mmi-optional
name: Check if MMI Optional tests should run
# Check if MMI tests should run
- &check-mmi-trigger
name: Check if MMI tests should run
command: |
RUN_MMI_OPTIONAL=$(cat ./RUN_MMI_OPTIONAL)
if [[ "${RUN_MMI_OPTIONAL}" == "true" ]]; then
echo "Running MMI Optional tests"
source mmi_trigger.env
if [ "${run_mmi_tests}" == "true" ]; then
echo "Running MMI tests"
else
echo "Skipping MMI Optional tests"
echo "Skipping MMI tests"
circleci step halt
fi

Expand All @@ -114,7 +114,7 @@ workflows:
- trigger-beta-build:
requires:
- prep-deps
- check-pr-tag
- check-mmi-trigger
- prep-deps
- get-changed-files-with-git-diff:
filters:
Expand Down Expand Up @@ -179,7 +179,7 @@ workflows:
- prep-build-test-mmi-playwright:
requires:
- prep-deps
- check-pr-tag
- check-mmi-trigger
- prep-build-storybook:
requires:
- prep-deps
Expand Down Expand Up @@ -231,7 +231,7 @@ workflows:
requires:
- prep-build-test-mmi
- get-changed-files-with-git-diff
- test-e2e-mmi-playwright - OPTIONAL:
- test-e2e-mmi-playwright:
requires:
- prep-build-test-mmi-playwright
- test-e2e-chrome-rpc-mmi:
Expand Down Expand Up @@ -421,39 +421,6 @@ jobs:
name: Create GitHub Pull Request for version
command: .circleci/scripts/release-create-release-pr.sh

check-pr-tag:
docker:
- image: cimg/base:stable
steps:
- run:
name: Check for MMI Team Tag
command: |
#!/bin/bash

GH_LABEL=team-mmi
if [ -z "$CIRCLE_PULL_REQUESTS" ]; then
echo "Skipping tag check; this is not a PR."
echo "false" > ./RUN_MMI_OPTIONAL
exit 0
fi

echo $CIRCLE_PULL_REQUESTS | sed 's/,/\n/g'

# See if any associated PRs have matching label
HAS_MATCHING_PR=$(echo $CIRCLE_PULL_REQUESTS \
| sed -e 's#,#\n#g' -e 's#/github.com/#/api.github.com/repos/#g' -e 's#/pull/#/pulls/#g' \
| xargs -n1 curl -s \
| jq -s "map((.labels|map(select(.name==\"${GH_LABEL}\"))))|flatten|length > 0")

echo "${GH_LABEL} tag presence: ${HAS_MATCHING_PR}"

# assign the RUN_MMI_OPTIONAL variable
echo "${HAS_MATCHING_PR}" > ./RUN_MMI_OPTIONAL
- persist_to_workspace:
root: .
paths:
- RUN_MMI_OPTIONAL

prep-deps:
executor: node-browsers-medium
steps:
Expand Down Expand Up @@ -839,7 +806,7 @@ jobs:
- run: corepack enable
- attach_workspace:
at: .
- run: *check-mmi-optional
- run: *check-mmi-trigger
- run:
name: Build MMI extension for Playwright e2e
command: |
Expand All @@ -854,7 +821,6 @@ jobs:
- persist_to_workspace:
root: .
paths:
- RUN_MMI_OPTIONAL
- dist-test-mmi-playwright
- builds-test-mmi-playwright
- store_artifacts:
Expand Down Expand Up @@ -1306,15 +1272,15 @@ jobs:
- store_test_results:
path: test/test-results/e2e

test-e2e-mmi-playwright - OPTIONAL:
test-e2e-mmi-playwright:
executor: playwright
parallelism: 2
steps:
- run: *shallow-git-clone-and-enable-vnc
- run: corepack enable
- attach_workspace:
at: .
- run: *check-mmi-optional
- run: *check-mmi-trigger
- run:
name: Move test build to dist
command: mv ./dist-test-mmi-playwright ./dist
Expand Down Expand Up @@ -1743,3 +1709,18 @@ jobs:
- run:
name: All Tests Passed
command: echo 'whew - everything passed!'

check-mmi-trigger:
executor: node-browsers-medium
steps:
- checkout
- run:
name: Check for MMI Team Label or Reviewer
command: ./.circleci/scripts/check_mmi_trigger.sh
- store_artifacts:
path: mmi_trigger.env
destination: mmi_trigger.env
- persist_to_workspace:
root: .
paths:
- mmi_trigger.env
60 changes: 60 additions & 0 deletions .circleci/scripts/check_mmi_trigger.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash
set -eo pipefail

# Ensure required environment variables are set
if [ -z "$CIRCLE_PULL_REQUEST" ] || [ -z "$GITHUB_TOKEN" ]; then
echo "This appears to be a fork or required environment variables are not set."
echo "Skipping MMI tests."
echo "run_mmi_tests=false" > mmi_trigger.env
exit 0
fi

# Extract PR number from the pull request URL
PR_NUMBER=$(echo "$CIRCLE_PULL_REQUEST" | awk -F'/' '{print $NF}')

# Define repository details
REPO_OWNER="$CIRCLE_PROJECT_USERNAME"
REPO_NAME=$(basename "$CIRCLE_REPOSITORY_URL" .git)

# Fetch PR details using GitHub API
PR_DETAILS=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
Gudahtt marked this conversation as resolved.
Show resolved Hide resolved
"https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/pulls/$PR_NUMBER")

# Fetch submitted reviews
SUBMITTED_REVIEWS=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
"https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/pulls/$PR_NUMBER/reviews")

# Check for label 'team-mmi'
LABEL_EXISTS=$(jq -r '.labels[]? | select(.name == "team-mmi") | length > 0' <<< "$PR_DETAILS")

# Check for individual reviewer 'mmi'
REVIEWER_REQUESTED=$(jq -r '.requested_reviewers[]? | select(.login == "mmi") | length > 0' <<< "$PR_DETAILS")

# Check for team reviewer 'mmi'
TEAM_REQUESTED=$(jq -r '.requested_teams[]? | select(.slug == "mmi") | length > 0' <<< "$PR_DETAILS")

# Check if 'mmi' submitted a review
REVIEWER_SUBMITTED=$(jq -r '.[]? | select(.user.login == "mmi") | length > 0' <<< "$SUBMITTED_REVIEWS")

# Determine which condition was met and trigger tests if needed
if [[ "$LABEL_EXISTS" == "true" || "$REVIEWER_REQUESTED" == "true" || "$TEAM_REQUESTED" == "true" || "$REVIEWER_SUBMITTED" == "true" ]]; then
echo "run_mmi_tests=true" > mmi_trigger.env

# Log exactly which condition was met
echo "Conditions met:"
if [[ "$LABEL_EXISTS" == "true" ]]; then
echo "- Label 'team-mmi' found."
fi
if [[ "$REVIEWER_REQUESTED" == "true" ]]; then
echo "- Reviewer 'mmi' requested."
fi
if [[ "$TEAM_REQUESTED" == "true" ]]; then
echo "- Team 'mmi' requested."
fi
if [[ "$REVIEWER_SUBMITTED" == "true" ]]; then
echo "- Reviewer 'mmi' submitted a review."
fi
else
echo "run_mmi_tests=false" > mmi_trigger.env
echo "Skipping MMI tests: Neither the 'team-mmi' label was found nor a reviewer from the 'MetaMask/mmi' team was assigned."
fi
Loading