Skip to content

feat(testing): add mobile integration test skill - #78

Merged
racitores merged 2 commits into
mainfrom
raci/add-integration-test-skill
Jul 27, 2026
Merged

feat(testing): add mobile integration test skill#78
racitores merged 2 commits into
mainfrom
raci/add-integration-test-skill

Conversation

@racitores

@racitores racitores commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Description

Centralizes the MetaMask Mobile integration-test skill that was originally checked into Mobile by MetaMask/metamask-mobile#29749.

The skill follows the existing component-view-test source layout:

  • a small discoverable base skill.md
  • a repos/metamask-mobile.md overlay with Mobile-specific workflow and rules
  • bundled writing, harness-extension, and run/fix references
  • shared testing-layer guidance that distinguishes integration tests from component-view, unit, and E2E tests

The README and peer CV/unit skills now include integration testing in their layer-selection guidance.

Type of Change

  • New skill
  • Skill improvement/update
  • Bug fix
  • Documentation update
  • Other (please describe):

Skill Details (if adding a new skill)

Provider Name: MetaMask
Skill Name: integration-test
Brief Description: Write, fix, and review MetaMask Mobile controller-app integration tests using real controller code with the I/O boundary mocked.

Checklist

  • I have read the CONTRIBUTING.md guidelines
  • My skill follows the SKILL_TEMPLATE.md format
  • I have tested this skill with an AI agent
  • My skill does not contain any secrets, private keys, or sensitive data
  • I have added appropriate documentation
  • My changes don't break existing skills

Testing

  • node --test test/*.test.mjs — 41/41 passing
  • node bin/metamask-skills.mjs describe testing/integration-test --repo metamask-mobile
  • tools/install --repo metamask-mobile --target <mobile-checkout> --domain testing --dry-run
  • Verified generation targets for Claude, Cursor, and Agents under mms-integration-test

Additional Context

A coordinated MetaMask Mobile PR removes the repository-owned .agents/skills/integration-test copy and points framework documentation at this canonical source.

Made with Cursor

Coordinated cleanup: MetaMask/metamask-mobile#33864.

Centralize the Mobile integration-test workflow and align the shared testing-layer guidance so generated skills remain the single source of truth.

Co-authored-by: Cursor <cursoragent@cursor.com>
Extend the CV-default guidance from #70 across coding, PR-workflow, and perps review skills so app-to-controller flows are steered to the integration layer under the best-fit-layer model.

Co-authored-by: Cursor <cursoragent@cursor.com>
@racitores
racitores marked this pull request as ready for review July 27, 2026 16:02
@racitores
racitores merged commit cd95124 into main Jul 27, 2026
27 checks passed
@racitores
racitores deleted the raci/add-integration-test-skill branch July 27, 2026 16:13
pull Bot pushed a commit to firas9941/metamask-mobile that referenced this pull request Jul 28, 2026
…3864)

<!--
Please submit this PR as a draft initially.

Do not mark it as "Ready for review" until this PR meets the canonical
Definition of Ready For Review in `docs/readme/ready-for-review.md`.

In short: the template must be materially complete (not just section
titles
present), all status checks must be currently passing, and the only
expected
follow-up commits must be reviewer-driven.
-->

## **Description**

<!-- mms-check: type=text required=true -->

Removes the hand-authored `.agents/skills/integration-test` copy
introduced by MetaMask#29749. Agent skills are centrally maintained and
generated from
[MetaMask/skills#78](MetaMask/skills#78),
matching the existing `component-view-test` distribution model.

Framework documentation now links to the canonical central source, and
the obsolete max-lines exception for the deleted directory is removed.
The generated `mms-integration-test` outputs remain ignored by Mobile
and are installed through `yarn skills` after the central PR merges.

Verification:

- MetaMask/skills CLI tests: 41/41 passing
- `metamask-skills describe testing/integration-test --repo
metamask-mobile`
- installer dry-run verified Claude, Cursor, and Agents outputs
- `git diff --check`

Dependency: merge
[MetaMask/skills#78](MetaMask/skills#78) before
this PR.

## **Changelog**

<!-- mms-check: type=changelog required=true blocking=true -->

CHANGELOG entry: null

## **Related issues**

<!-- mms-check: type=issue-link required=true -->

Refs: MetaMask#29749, MetaMask/skills#78

## **Manual testing steps**

<!-- mms-check: type=manual-testing required=true -->

N/A — developer-only documentation and generated skill source migration;
installer behavior is verified in MetaMask/skills.

## **Screenshots/Recordings**

<!-- mms-check: type=screenshot required=true -->

### **Before**

N/A — no user-facing UI change.

### **After**

N/A — no user-facing UI change.

## **Pre-merge author checklist**

<!-- mms-check: type=checklist required=true -->

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

#### Performance checks (if applicable)

- [x] I've tested on Android
  - Ideally on a mid-range device; emulator is acceptable
- [x] I've tested with a power user scenario
- Use these [power-user
SRPs](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/edit-v2/401401446401?draftShareId=9d77e1e1-4bdc-4be1-9ebb-ccd916988d93)
to import wallets with many accounts and tokens
- [x] I've instrumented key operations with Sentry traces for production
performance metrics
- See [`trace()`](/app/util/trace.ts) for usage and
[`addToken`](/app/components/Views/AddAsset/components/AddCustomToken/AddCustomToken.tsx#L274)
for an example

For performance guidelines and tooling, see the [Performance
Guide](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/400085549067/Performance+Guide+for+Engineers).

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- Generated with the help of the pr-description AI skill -->

Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
roz0n pushed a commit to MetaMask/metamask-mobile that referenced this pull request Jul 29, 2026
<!--
Please submit this PR as a draft initially.

Do not mark it as "Ready for review" until this PR meets the canonical
Definition of Ready For Review in `docs/readme/ready-for-review.md`.

In short: the template must be materially complete (not just section
titles
present), all status checks must be currently passing, and the only
expected
follow-up commits must be reviewer-driven.
-->

## **Description**

<!-- mms-check: type=text required=true -->

Removes the hand-authored `.agents/skills/integration-test` copy
introduced by #29749. Agent skills are centrally maintained and
generated from
[MetaMask/skills#78](MetaMask/skills#78),
matching the existing `component-view-test` distribution model.

Framework documentation now links to the canonical central source, and
the obsolete max-lines exception for the deleted directory is removed.
The generated `mms-integration-test` outputs remain ignored by Mobile
and are installed through `yarn skills` after the central PR merges.

Verification:

- MetaMask/skills CLI tests: 41/41 passing
- `metamask-skills describe testing/integration-test --repo
metamask-mobile`
- installer dry-run verified Claude, Cursor, and Agents outputs
- `git diff --check`

Dependency: merge
[MetaMask/skills#78](MetaMask/skills#78) before
this PR.

## **Changelog**

<!-- mms-check: type=changelog required=true blocking=true -->

CHANGELOG entry: null

## **Related issues**

<!-- mms-check: type=issue-link required=true -->

Refs: #29749, MetaMask/skills#78

## **Manual testing steps**

<!-- mms-check: type=manual-testing required=true -->

N/A — developer-only documentation and generated skill source migration;
installer behavior is verified in MetaMask/skills.

## **Screenshots/Recordings**

<!-- mms-check: type=screenshot required=true -->

### **Before**

N/A — no user-facing UI change.

### **After**

N/A — no user-facing UI change.

## **Pre-merge author checklist**

<!-- mms-check: type=checklist required=true -->

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

#### Performance checks (if applicable)

- [x] I've tested on Android
  - Ideally on a mid-range device; emulator is acceptable
- [x] I've tested with a power user scenario
- Use these [power-user
SRPs](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/edit-v2/401401446401?draftShareId=9d77e1e1-4bdc-4be1-9ebb-ccd916988d93)
to import wallets with many accounts and tokens
- [x] I've instrumented key operations with Sentry traces for production
performance metrics
- See [`trace()`](/app/util/trace.ts) for usage and
[`addToken`](/app/components/Views/AddAsset/components/AddCustomToken/AddCustomToken.tsx#L274)
for an example

For performance guidelines and tooling, see the [Performance
Guide](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/400085549067/Performance+Guide+for+Engineers).

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- Generated with the help of the pr-description AI skill -->

Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
MajorLift added a commit to MajorLift/metamask-skills that referenced this pull request Jul 30, 2026
CHANGELOG.md tracks consumer-facing changes to the `@metamask/skills` package,
per CONTRIBUTING's "CLI / tooling changes" section. No merged skill-only PR adds
an entry (MetaMask#80, MetaMask#78, MetaMask#70, MetaMask#62, MetaMask#61 all touch zero changelog lines).

Carrying one here bought nothing and was the sole source of this branch's
conflict with `main`, since every skill PR edits the same `[Unreleased]` block.
Restoring the file to its merge-base state makes the branch conflict-free
without a merge commit.
MajorLift added a commit to MajorLift/metamask-skills that referenced this pull request Jul 30, 2026
CHANGELOG.md tracks consumer-facing changes to the `@metamask/skills` package,
per CONTRIBUTING's "CLI / tooling changes" section. No merged skill-only PR adds
an entry (MetaMask#80, MetaMask#78, MetaMask#70, MetaMask#62, MetaMask#61 all touch zero changelog lines).

It was also the sole source of this branch's conflict with `main`, since every
skill PR edits the same `[Unreleased]` block.
MajorLift added a commit to MajorLift/metamask-skills that referenced this pull request Jul 30, 2026
CHANGELOG.md tracks consumer-facing changes to the `@metamask/skills` package,
per CONTRIBUTING's "CLI / tooling changes" section. No merged skill-only PR adds
an entry (MetaMask#80, MetaMask#78, MetaMask#70, MetaMask#62, MetaMask#61 all touch zero changelog lines).

It was also the sole source of this branch's conflict with `main`, since every
skill PR edits the same `[Unreleased]` block.
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.

2 participants