Skip to content

Consolidate e2e tests: Migrate BASH to GO framework #4644

Description

@efiacor

Title: Consolidate e2e tests: Migrate BASH to GO framework

Problem

Two separate e2e test suites exist for live functionality (acknowledged in e2e/README.md as needing reconciliation):

  • GO-based (e2e/live_test.go): declarative fixture tests
  • BASH-based (e2e/live/end-to-end-test.sh): procedural scenario tests

Both run every PR, creating maintenance burden and scenario duplication.

Solution

Single unified GO-based e2e test suite handling all scenarios.

Implementation approach

  1. Extend GO test framework for sequential scenarios

    • Add multi-step test support to pkg/test/runner
    • Create scenario YAML format (like current fixtures)
    • No Ginkgo/Gomega needed - standard Go testing sufficient
  2. Restructure test infrastructure

    • Move pkg/test/runner/e2e/framework/runner/
    • Move pkg/test/live/e2e/framework/live/
    • Clarifies: production code in pkg/, e2e infrastructure in e2e/
  3. Migrate all BASH scenarios to fixtures

    • Init commands and variations
    • Stdin input handling
    • Error and RBAC scenarios
    • Symlink handling
    • Custom filename support
  4. Add multi-version testing via matrix

    • Parametrize K8s version in framework
    • Use GitHub Actions matrix for parallel testing
    • Replaces BASH version loop
  5. Clean up

    • Delete e2e/live/end-to-end-test.sh
    • Delete .github/workflows/e2eEnvironment.yml
    • Consolidate to single workflow

What gets migrated

20+ BASH scenarios covering:

  • Initialization (init, init --force, init --quiet, custom filenames)
  • Stdin operations (apply/status/destroy from stdin)
  • Error handling (RBAC, continue-on-error)
  • Advanced scenarios (symlinks, custom ResourceGroup names)
  • Multi-version testing (K8s 1.21-1.36)

Benefits

Single maintainable suite, no new dependencies, cleaner project structure, faster tests, full coverage retained.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/livegoPull requests that update Go codetask

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions