Decompose: End-to-end pipeline tests (SVG/DST, PES, raster, multi-stitch, pull compensation, machine constraints) — Phase 6: Machine profile constraint (PR-10) #68

Closed
opened 2026-06-22 16:31:46 +00:00 by Mark · 0 comments
Owner

Phase 6: Machine profile constraint (PR-10)

End-to-end test that machine constraints are actually enforced. Uses
the PR-10 profile from issue #36.

Files:

  • Modify: tests/test_pipeline_e2e.py
  • New: data/test_fixtures/oversized.svg (a design that exceeds the
    PR-10 hoop)

Acceptance:

  • process(oversized.svg, machine_profile="brother_pr10") either:
    (a) rejects with a clear error, or (b) scales to fit, depending on
    the pipeline's policy. The test asserts on whichever behavior the
    pipeline implements; whichever it is, the test exists and pins the
    behavior so it doesn't silently change.
  • A design within the hoop passes through unchanged.
  • Max thread count constraint: a design with 50 colors, with the
    PR-10 profile (10 threads), produces output with ≤ 10 distinct
    colors.

Depends on: P1, issue #36 (PR-10 profile exists).

Cross-cutting

  • All tests use snapshot + tolerance, not byte-exact matches
    (raster output is sensitive to numpy/scipy version pins; the
    pipeline is deterministic in shape but the bytes can shift).
  • Tests are run by CI on every PR. Local dev can skip them with
    pytest -m "not e2e" for fast iteration.
  • Total runtime target: < 60 seconds for the full e2e suite. If it
    exceeds that, the slowest test gets a pytest.mark.slow and CI
    runs it in a separate job.

Decomposed from easystitch#41

## Phase 6: Machine profile constraint (PR-10) End-to-end test that machine constraints are actually enforced. Uses the PR-10 profile from issue #36. **Files:** - Modify: `tests/test_pipeline_e2e.py` - New: `data/test_fixtures/oversized.svg` (a design that exceeds the PR-10 hoop) **Acceptance:** - `process(oversized.svg, machine_profile="brother_pr10")` either: (a) rejects with a clear error, or (b) scales to fit, depending on the pipeline's policy. The test asserts on whichever behavior the pipeline implements; whichever it is, the test exists and pins the behavior so it doesn't silently change. - A design within the hoop passes through unchanged. - Max thread count constraint: a design with 50 colors, with the PR-10 profile (10 threads), produces output with ≤ 10 distinct colors. **Depends on:** P1, issue #36 (PR-10 profile exists). ## Cross-cutting - All tests use **snapshot + tolerance**, not byte-exact matches (raster output is sensitive to numpy/scipy version pins; the pipeline is deterministic in shape but the bytes can shift). - Tests are run by CI on every PR. Local dev can skip them with `pytest -m "not e2e"` for fast iteration. - Total runtime target: < 60 seconds for the full e2e suite. If it exceeds that, the slowest test gets a `pytest.mark.slow` and CI runs it in a separate job. --- _Decomposed from [easystitch#41](https://forgejo.tail018ac4.ts.net/Mark/easystitch/issues/41)_
Mark closed this issue 2026-06-23 16:08:45 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Mark/easystitch#68
No description provided.