Skip to content

Add end-to-end test suite to prevent regressions across indexing, GraphQL, and Postgres #335

@ricardo-perello

Description

@ricardo-perello

We currently lack an automated end-to-end test suite to validate Rindexer’s full flow across historic indexing, live indexing, GraphQL, and Postgres. This gap allows regressions to slip through in areas like contract discovery, checkpoint restarts (duplicates), live transaction handling, and downstream integrations.

Why this matters:

  • Ensures core flows (historic + live) work against a real node (Anvil).
  • Validates Postgres integration and GraphQL queries.
  • Prevents regressions on restart semantics (no duplicates).
  • Provides reproducible, CI-friendly test targets.

Scope:

  • Create an e2e-tests crate with a registry-driven test system and runner.
  • Cover historic indexing, live indexing, GraphQL service availability and querying, Postgres writes, multi-network mixed runs, and a direct-RPC verification.
  • Add Makefile targets for local dev and CI.

Acceptance Criteria:

  • A new e2e-tests/ workspace member with:

    • Registry-based test discovery/runner (TestRegistry, TestRunner).
    • Live feeder to generate transactions for live tests.
    • Anvil management for test-controlled chains.
    • Rindexer process manager and health client.
  • Tests available and passing:

    • Historic:

      • Test basic Rindexer connection to Anvil with minimal configuration
      • Test Rindexer can discover and register contract events from ABI
      • Test Rindexer can index historic events from contract deployment
      • Restart indexer and ensure no duplicate events are written
    • Live:

      • Test live indexing with background transaction feeder
      • Test live indexing with high-frequency transactions
    • GraphQL:

      • Start ALL services with Postgres enabled and verify GraphQL stays up,
      • Start indexer+graphql, feed events, query transfers with filter & pagination
    • Postgres:

      • Enable Postgres storage, run indexing, and verify rows inserted,
      • Feed live transfers, index into Postgres, assert exact recipients
    • Direct RPC:

      • Direct RPC realism: Rocket Pool rETH Transfer vs expected CSV
    • Multi-network:

      • Multi-network historic: mainnet rETH + anvil SimpleERC20

Documentation exists under e2e-tests/README.md covering setup, running, and troubleshooting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions