Skip to content

Test Workflow Resource Conflicts: dev-test-on-pr and prod-test-on-pr interference #182

@chrisli30

Description

@chrisli30

Problem

The dev-test-on-pr and prod-test-on-pr workflows run simultaneously when triggered by pull requests, causing resource conflicts that lead to test timeouts and failures.

Root Cause

Both workflows:

  1. Run on the same network: Both use Sepolia network (dev environment uses Sepolia, prod matrix includes Sepolia)
  2. Use the same smart wallet addresses: Both use salt 0 for consistent pre-funded wallet addresses
  3. Compete for the same resources: Bundler service, RPC endpoints, and smart wallet nonce management
  4. Run concurrently: Both are triggered by pull_request events

Evidence

From recent test runs:

  • Successful run: Tests passed when running in isolation
  • Failed run: Same commit, same configuration, but failed due to timeouts when running concurrently
  • Same transaction hashes: Both workflows generated identical userOpHash and transactionHash, indicating nonce conflicts

Immediate Fix Applied

  • Temporarily disabled pull_request trigger in prod-test-on-pr.yml
  • Kept workflow_dispatch for manual- Kept workflow_dispatch for manual- Kept workflow_dispatch for manual- Kept workflow_dispatch for manual- Kept workflow_dispatch for manual- Kept workflow_dispatcpolia
  • Prod: Use mainnet/base for pro- Prod: Use mainnet/base for pro- Prod: Use mainnet/base for pro- Prod: Use mainnet/basfferent workflows
  • Dev workflow: salts 0-99
  • Prod workflow: salts 100-199
  • Ensure both ranges have pre-funded wallets

Option 3: Sequential Execution

  • Add workflow dependencies to prevent concurrent runs
  • Use GitHub concurrency controls

Option 4: Resource Pooling

  • Create a larger pool of pre-funded test wallets
    -----------------------------------------------------flicts

Current Status

  • prod-test-on-pr auto-trigger disabled
  • dev-test-on-pr continues to run on PRs
  • Manual production testing still available via workflow_dispatch

Next Steps

  1. Validate that dev tests now run reliably without conflicts
  2. Choose and implement a long-term solution
  3. Re-enable production testing with proper isolation
  4. Document wallet funding requirements for chosen approach

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions