adobe / adobe/phased-testing

Remove Legacy Phases (deprecated) in version 10

Open
#248 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
9
Forks
4
Avg merge
2d 5h
Merged PRs (30d)
7

Description

## Summary

Legacy Phases have been deprecated for some time and were documented as supported "until version 9.X.2". As we move to **version 10**, they should be removed.

Legacy Phases are the old execution-time directives (`PRODUCER` / `CONSUMER` / `ASYNCHRONOUS` / `NON_PHASED`) and their associated `PHASED.*` properties, which have since been superseded by the [Execution Modes](../../README.md#execution-modes) (`STANDARD` / `INTERRUPTIVE` / `NON-INTERRUPTIVE` / `PERMUTATIONAL`) driven by `MUTATIONAL.EXECUTION.MODE`.

## Motivation

- The framework now expresses everything through the generalized Mutational **Execution Modes**; Phases are a redundant, legacy surface kept only for backward compatibility.
- Version 10 is a major bump — the appropriate point to drop deprecated API/config.

## Candidate surfaces to audit and remove

> The list below is from a light scan and should be verified before removal.

**Deprecated run-time properties** (see `ConfigValueHandlerPhased`):
- [ ] `PHASED.TESTS.PHASE` — legacy phase selector (superseded by `MUTATIONAL.EXECUTION.MODE`)
- [ ] `PHASED.EVENTS.NONINTERRUPTIVE` — renamed to `MUTATIONAL.EVENTS.NONINTERRUPTIVE`
- [ ] `PHASED.EVENTS.TARGET` — renamed to `MUTATIONAL.EVENTS.TARGET`
- [ ] `PHASED.TESTS.NONPHASED.LEGACY` — pre-8.0.0 backward-compat flag for the `phased-data-provider-single` group name
- [ ] The deprecation-warning fallback path that still honors these old names

**Code:**
- [ ] Review the `Phases` enum (`phased-testing-core`) and its mapping to `ExecutionMode`; determine what can be removed vs. what stays as an internal implementation detail
- [ ] Any `@Deprecated` members tied to legacy phases in `PhasedTest`, `PhasedTestListener`

**Docs:**
- [ ] Remove the "LEGACY PHASES - DEPRECATED" section and the deprecated `PHASED.*` property entries from the READMEs
- [ ] Add a migration note to `CHANGELOG.md` mapping old phases/properties → current execution modes/properties

## Acceptance criteria

- [ ] All legacy-phase config aliases and their fallback handling are removed
- [ ] No references to the deprecated properties remain in code or docs
- [ ] Migration guidance is captured in the changelog
- [ ] Tests covering the deprecated paths are removed or migrated

## Notes

Removing these is a **breaking change** and must land in the 10.0.0 release. Consumers still using `PHASED.*` properties will need to migrate to the `MUTATIONAL.*` equivalents.

Contributor guide

Open the contributing guide

Research direction

Start by auditing ConfigValueHandlerPhased, the Phases enum, PhasedTest, and PhasedTestListener for deprecated properties, aliases, fallback handling, and deprecated members. Then review the README sections and CHANGELOG.md; done means legacy references and tests are removed or migrated, with migration guidance for the MUTATIONAL.* replacements.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
documentation, testing
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.