Implement End-to-End Testing
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 5
- Forks
- 1
- Avg merge
- 17h 48m
- Merged PRs (30d)
- 2
Description
Problem
No E2E tests to validate that new versions won't break CI:
- Can't test full workflows before deployment
- Regressions only discovered in production CI
- No confidence when making changes
- Manual testing is time-consuming and incomplete
Proposed E2E Testing Strategy
Test Fixture Strategy (Hybrid Approach)
Use synthetic fixtures for most tests (predictable, fast) and one real-world repo for smoke tests (confidence).
test_data/e2e_fixtures/
├── simple_monorepo/ # Basic case
├── complex_monorepo/ # Real-world complexity
└── regression_tests/ # Known issues
└── issue_001_ref_mismatch/
E2E Test Categories
Workflow Tests
- Test full check-workspace → publish workflow
- Test test execution workflow
Change Detection Tests
- Test transitive dependency detection
- Test cross-workspace dependencies
- Test whitelist/blacklist filtering
Publishing Tests
- Test GitHub release publishing
- Test Cargo registry publishing
- Test Docker image publishing
- Test NPM publishing
- Test S3 publishing
Parallel Execution Tests
- Test job_limit enforcement
- Test inner_job_limit enforcement
- Verify parallelism achieves expected speedup
Regression Tests
- Test for issue #1 (ref/SHA mismatch)
- Tests for any known historical bugs
Test Infrastructure
Test Harness
pub struct TestMonorepo {
temp_dir: TempDir,
git_repo: Repository,
}
pub struct MockRegistry { /* ... */ }
pub struct MockGithubServer { /* ... */ }
Test Utilities
- Helper functions to run commands
- JSON output parsing
- Result verification helpers
CI Integration
- Run E2E tests in CI on every PR
- Pre-release validation before creating releases
- Generate E2E test reports
Performance Benchmarks
Track performance over time to detect regressions:
- check-workspace on large repos
- parallel test execution
- publish workflow timing
Implementation Plan
Week 1: Foundation
- Create test harness (
TestMonorepo,MockRegistry, etc.) - Create simple test fixtures
- Set up E2E test directory structure
Week 2: Core Workflow Tests
- Test check-workspace E2E
- Test publish E2E with mocked services
- Test test command E2E
Week 3: Advanced Scenarios
- Test cross-workspace dependencies
- Test parallel execution
- Test error handling and recovery
Week 4: Regression Tests
- Add test for issue #1 (ref/SHA mismatch)
- Add tests for any known historical bugs
- Add performance benchmarks
Week 5: Real-World Testing
- Integrate real-world test repository
- Smoke test against real repo
- Document how to run E2E tests
Week 6: CI Integration
- Add E2E tests to CI pipeline
- Set up pre-release validation
- Generate test reports
Success Metrics
- E2E tests cover all major workflows (check, test, publish)
- E2E tests can run in < 5 minutes
- E2E tests catch the ref/SHA mismatch issue
- E2E tests run in CI on every PR
- Pre-release validation prevents broken releases
- At least one real-world repository tested
Test Coverage Goals
- Check workspace: 100% of scenarios
- Publish: 90%
- Tests: 90%
- Other commands: 80%
Labels
testing, priority:high
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the proposed TestMonorepo, MockRegistry, and MockGithubServer harnesses and the test_data/e2e_fixtures layout. Identify the existing check-workspace, test, and publish entry points before defining the E2E test structure. Done means the major workflows, regression cases, CI integration, and stated coverage and runtime goals are implemented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100