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.

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