Skip to content

🔗 End-to-End Integration Tests #72

@mijinummi

Description

@mijinummi

📌 Overview

Gasless transaction flows involve multiple services, chains, and smart contract interactions. Without end-to-end (E2E) testing, regressions or failures in any component can go undetected, causing unreliable behavior for users.

This task introduces End-to-End Integration Tests to simulate the complete transaction pipeline and validate the reliability of gasless flows.


🎯 Objective

Build a system that:

  • Simulates full gasless transaction workflows from initiation to completion
  • Validates interactions across backend API, RPC providers, queue workers, and contracts
  • Detects potential failures, regressions, and edge cases
  • Ensures confidence before merging or deploying changes

🛠 Scope of Work

1️⃣ Test Workflow Design

  • Identify critical gasless transaction flows:

    • Transaction creation via API
    • Queuing in BullMQ
    • Worker execution and RPC interaction
    • Signature verification and relayer submission
    • Transaction completion and monitoring
  • Include failure scenarios:

    • RPC timeout or failure
    • Worker retry logic
    • Insufficient gas or revert errors
    • Signature expiration

2️⃣ Test Environment Setup

  • Isolated test environment:

    • Local blockchain or testnets (e.g., Hardhat, Ganache, Goerli)
    • Dockerized services for backend and workers
    • Mock RPC providers if needed
  • Database reset between test runs to ensure consistency


3️⃣ Test Implementation

  • Write automated E2E tests using preferred framework:

    • Jest with Supertest (API endpoints)
    • Hardhat / Ethers.js for contract interactions
    • Optional Playwright or Cypress for dashboard flows
  • Example test case:

test("Gasless transaction completes successfully", async () => {
  const tx = await api.createTransaction({ merchantId, to, value });
  await worker.processQueue();
  const receipt = await blockchain.getTransactionReceipt(tx.hash);
  expect(receipt.status).toBe(1);
});

Metadata

Metadata

Assignees

No one assigned

    Labels

    Nest.jsStellar WaveIssues in the Stellar wave programbackendNew feature or request

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions