Skip to content

Add E2E Test Playground with SCW Release Test Suite#217

Open
spencerstock wants to merge 21 commits intomasterfrom
spencer/e2e-playground
Open

Add E2E Test Playground with SCW Release Test Suite#217
spencerstock wants to merge 21 commits intomasterfrom
spencer/e2e-playground

Conversation

@spencerstock
Copy link
Collaborator

@spencerstock spencerstock commented Dec 23, 2025

What changed? Why?

Added an E2E test playground with automated test runner for SDK functionality in the testapp. This includes:

  • New /e2e-test page in testapp with test runner UI
  • Test coverage for wallet connection, signing, transactions, payments, subscriptions, spend permissions, sub-accounts, and ProLink
  • Modular test architecture with hooks for state management, test execution, and result handling
  • SCW Release test suite with configurable wallet URL for testing against different environments
  • User interaction modal system for handling popup-based tests
  • SDK loader utility to switch between npm and local workspace SDK versions
  • Test result formatting and display with status tracking

Key features:

  • Run individual test categories or full test suite
  • Skip modal prompts for automated testing
  • Configurable delays and retry logic
  • Test result visualization and debugging support

How was this tested?

  • Manual testing of E2E test runner interface
  • Validation of SDK loader switching between npm/local versions
  • SCW Release test suite execution with custom wallet URLs
  • Test execution across all supported test categories

How can reviewers manually test these changes?

  1. Run testapp: yarn dev (from examples/testapp)
  2. Navigate to /e2e-test page
  3. Click "Run All Tests" to execute full test suite
  4. Or click individual category buttons to run specific test groups
  5. Observe test results with pass/fail status and execution details

For SCW Release testing:

  1. Set custom wallet URL in configuration
  2. Run "SCW Release Tests" button
  3. Verify tests complete with expected wallet behavior

…lpers

- Remove redundant addLog calls from test files (status updates already provide this info)
- Remove unused ensureConnection helper from useConnectionState
- Clean up imports and types across test framework
- Update documentation to reflect simplified logging approach
@cb-heimdall
Copy link
Collaborator

cb-heimdall commented Dec 23, 2025

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@spencerstock spencerstock marked this pull request as ready for review January 27, 2026 17:58
Comment on lines -58 to -59
<MenuButton colorScheme="telegram" as={Button} rightIcon={<ChevronDownIcon />}>
{`SDK: ${version}`}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removing this since it currently does nothing

Copy link
Collaborator

@montycheese montycheese left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, I tested locally and it'll be a great time saver for testing and smoke tests.

one clarifying question

chainIdHex: '0x14a34',
name: 'Base Sepolia',
rpcUrl:
'https://api.developer.coinbase.com/rpc/v1/base-sepolia/S-fOd2n2Oi4fl4e1Crm83XeDXZ7tkg8O',
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

who owns this?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A team inside coinbase - but removing as it's not actually needed.

Copy link
Collaborator

@stephancill stephancill left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

was it your intention to replace the paymaster url here with a dummy one? there are a couple more instances that i didn't highlight

Comment on lines -42 to +47
transport: http(
'https://api.developer.coinbase.com/rpc/v1/base-sepolia/S-fOd2n2Oi4fl4e1Crm83XeDXZ7tkg8O'
),
transport: http('https://example.paymaster.com'),
});
const bundlerClient = createBundlerClient({
account: subAccount,
client: client as Client,
transport: http(
'https://api.developer.coinbase.com/rpc/v1/base-sepolia/S-fOd2n2Oi4fl4e1Crm83XeDXZ7tkg8O'
),
transport: http('https://example.paymaster.com'),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this intentional?

Comment on lines -33 to +38
transport: http(
'https://api.developer.coinbase.com/rpc/v1/base-sepolia/S-fOd2n2Oi4fl4e1Crm83XeDXZ7tkg8O'
),
transport: http('https://example.paymaster.com'),
});
const bundlerClient = createBundlerClient({
account: subAccount,
client: client as Client,
transport: http(
'https://api.developer.coinbase.com/rpc/v1/base-sepolia/S-fOd2n2Oi4fl4e1Crm83XeDXZ7tkg8O'
),
transport: http('https://example.paymaster.com'),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here too

capabilities: {
paymasterService: {
url: 'https://api.developer.coinbase.com/rpc/v1/base-sepolia/S-fOd2n2Oi4fl4e1Crm83XeDXZ7tkg8O',
url: 'https://example.paymaster.com',
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

paymaster url

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.

4 participants