{
  "test_case_id": "A11Y-WCAG-017",
  "title": "WCAG 1.4.10 Reflow",
  "category": "wcag_manual",
  "procedure_version": "2026.08.27-rc.9",
  "rule_type": "composite",
  "wcag_criteria": [
    "1.4.10"
  ],
  "level": "AA",
  "risk": "medium",
  "risk_basis": "Detect content or controls that require two-dimensional scrolling, become clipped, overlap or disappear when enlarged. People most likely affected: people with low vision who use browser zoom; People who need a narrow viewport or enlarged interface. Users may lose information, controls, validation, navigation or task completion when content reflows. In the recorded web-desktop-cross-browser environment, apply the criterion to every relevant state and named normative exception; failures in critical tasks and complete processes carry the greatest user impact.",
  "review_status": "draft",
  "reviewed_at": "",
  "review_note": "Template content is subject to a hash-bound internal consistency review. Formal assessment claims require competent execution, current evidence and the applicable legal, participant and organisational authority.",
  "method_label": "WCAG check",
  "tester_level": "Accessibility tester",
  "estimated_duration": "Typically 33–48 minutes for the stated single-target assumptions; use the component breakdown when estimating a real sample.",
  "execution_class": "manual_with_automation_support",
  "automation_support": "supporting_evidence_only",
  "simulation_policy": "simulation_may_support_but_not_replace_manual_execution",
  "plain_summary": "At 400% browser zoom, check vertical content at 320 CSS pixels wide and horizontal content at 256 CSS pixels high.",
  "objective": "Detect content or controls that require two-dimensional scrolling, become clipped, overlap or disappear when enlarged.",
  "test_subject": "Content and functionality in selected pages, complete processes and meaningful states at the two normative reflow equivalents.",
  "test_targets": [
    "Vertically scrolling content at a width equivalent to 320 CSS pixels.",
    "Horizontally scrolling content at a height equivalent to 256 CSS pixels."
  ],
  "applicability": "Apply to web content at the specified equivalents. Isolate only content that genuinely requires a two-dimensional layout; do not exempt the whole page.",
  "applicability_questions": [
    "Does the page primarily scroll vertically, horizontally, or contain regions of both?",
    "Does any region require two-dimensional layout for usage or meaning?",
    "After reflow, are all information and functions available without two-dimensional page scrolling?"
  ],
  "inapplicability_conditions": [
    "The selected subject contains no web content to render at the reflow equivalents."
  ],
  "assumptions": [
    "The selected scope identifies the product version, technologies, states and important user journeys being evaluated.",
    "The tester knows how to use this method and any required assistive technology.",
    "Known browser or assistive-technology limitations are recorded instead of being assigned to the product without evidence."
  ],
  "accessibility_support_assumptions": [
    "The result covers only the browsers, platforms, readers and assistive technologies that were actually tested.",
    "Do not apply a result from one technology combination to an untested combination or to every user."
  ],
  "prerequisites": [
    "The product area and test targets are agreed before testing starts.",
    "The operating system, browser, viewport and input method are recorded.",
    "Test data is safe to use and does not expose unnecessary personal information."
  ],
  "required_environment_fields": [
    "operating_system",
    "operating_system_version",
    "browser",
    "browser_version",
    "viewport_css_pixels",
    "input_method"
  ],
  "steps": [
    {
      "step_id": "S1",
      "title": "Freeze pages, states and starting viewports",
      "phase": "prepare",
      "action": "Record every selected page, complete-process step and meaningful state. For the common 400% method, prepare a 1280 CSS-pixel-wide starting viewport for the 320-width branch and a 1024 CSS-pixel-high starting viewport for the 256-height branch.",
      "test_target": "Both reflow targets.",
      "required_state": "Browser at 100% before each branch; browser chrome and OS scaling recorded.",
      "tool_or_command": "Browser viewport measurement and genuine browser zoom controls.",
      "expected": "The starting viewport equivalents and selected state inventory are reproducible.",
      "evidence_to_record": "Browser/version, OS scaling, starting CSS viewport, page/state and process step.",
      "decision_effect": "An unrecorded or unavailable branch remains untested.",
      "recovery_or_repeat": "Reset zoom and viewport before switching branches.",
      "novice_guidance": "Device emulation can help diagnosis, but the reference execution uses genuine browser zoom unless an equivalent method is justified and recorded.",
      "scenario_purpose": "For WCAG 1.4.10 Reflow, prepare the named scenario: Freeze pages, states and starting viewports. Target: Both reflow targets. The preparation must establish this result: The starting viewport equivalents and selected state inventory are reproducible.",
      "user_impact": "Users may lose information, controls, validation, navigation or task completion when content reflows. This scenario isolates that risk in the action named Freeze pages, states and starting viewports.",
      "failure_observation": "During WCAG 1.4.10 Reflow, the target, starting state, environment or scope record remains ambiguous for the scenario named Freeze pages, states and starting viewports. The preparation result cannot be demonstrated: The starting viewport equivalents and selected state inventory are reproducible.",
      "decision_rules": {
        "passed": "Record passed for the WCAG 1.4.10 Reflow scenario named Freeze pages, states and starting viewports only when the evidence (Browser/version, OS scaling, starting CSS viewport, page/state and process step.) supports: The starting viewport equivalents and selected state inventory are reproducible.",
        "failed": "Record failed when the action is completed and this failure observation is reproduced: During WCAG 1.4.10 Reflow, the target, starting state, environment or scope record remains ambiguous for the scenario named Freeze pages, states and starting viewports. The preparation result cannot be demonstrated: The starting viewport equivalents and selected state inventory are reproducible.",
        "not_applicable": "No web content exists in the selected subject.",
        "blocked": "Record blocked, not passed, when The target is applicable, but a required state, environment, action or evidence item was not completed."
      },
      "limitations_and_claim_boundary": "This WCAG 1.4.10 Reflow scenario covers only the action named Freeze pages, states and starting viewports for the recorded target and state. It contributes evidence to 1.4.10; apply the procedure's aggregation, complete-process and conformance-scope rules before making a broader decision."
    },
    {
      "step_id": "S2",
      "title": "Test the 320 CSS-pixel-width branch",
      "phase": "test",
      "action": "At a 1280 CSS-pixel-wide starting viewport, apply genuine 400% browser zoom to obtain the 320 CSS-pixel-width equivalent. Read and operate vertically scrolling content without horizontal page scrolling, except within a documented two-dimensional region.",
      "test_target": "Vertically scrolling content at a width equivalent to 320 CSS pixels.",
      "required_state": "Each selected state at the 320 CSS-pixel-width equivalent.",
      "tool_or_command": "Genuine browser zoom, keyboard and pointer or the input modes required by the process.",
      "expected": "Information and functionality remain available, and applicable content needs only vertical scrolling.",
      "evidence_to_record": "Viewport/zoom evidence, screenshots, horizontal-overflow location and task result.",
      "decision_effect": "Loss, overlap, obstruction or required horizontal page scrolling fails unless confined to a supported exception.",
      "recovery_or_repeat": "Repeat for each responsive template and state; reload only when documented because reload can change responsive behaviour.",
      "novice_guidance": "Check the full document width and every opened layer, not just the initially visible region.",
      "scenario_purpose": "For WCAG 1.4.10 Reflow, execute the named scenario: Test the 320 CSS-pixel-width branch. Target: Vertically scrolling content at a width equivalent to 320 CSS pixels. Compare the observation with this result: Information and functionality remain available, and applicable content needs only vertical scrolling.",
      "user_impact": "Users may lose information, controls, validation, navigation or task completion when content reflows. This scenario isolates that risk in the action named Test the 320 CSS-pixel-width branch.",
      "failure_observation": "After the tester completes the WCAG 1.4.10 Reflow scenario named Test the 320 CSS-pixel-width branch, the recorded observation for the target is inconsistent with the required result: Information and functionality remain available, and applicable content needs only vertical scrolling.",
      "decision_rules": {
        "passed": "Record passed for the WCAG 1.4.10 Reflow scenario named Test the 320 CSS-pixel-width branch only when the evidence (Viewport/zoom evidence, screenshots, horizontal-overflow location and task result.) supports: Information and functionality remain available, and applicable content needs only vertical scrolling.",
        "failed": "Record failed when the action is completed and this failure observation is reproduced: After the tester completes the WCAG 1.4.10 Reflow scenario named Test the 320 CSS-pixel-width branch, the recorded observation for the target is inconsistent with the required result: Information and functionality remain available, and applicable content needs only vertical scrolling.",
        "not_applicable": "No web content exists in the selected subject.",
        "blocked": "Record blocked, not passed, when The target is applicable, but a required state, environment, action or evidence item was not completed."
      },
      "limitations_and_claim_boundary": "This WCAG 1.4.10 Reflow scenario covers only the action named Test the 320 CSS-pixel-width branch for the recorded target and state. It contributes evidence to 1.4.10; apply the procedure's aggregation, complete-process and conformance-scope rules before making a broader decision."
    },
    {
      "step_id": "S3",
      "title": "Test the 256 CSS-pixel-height branch",
      "phase": "test",
      "action": "At a 1024 CSS-pixel-high starting viewport, apply genuine 400% browser zoom to obtain the 256 CSS-pixel-height equivalent. Read and operate horizontally scrolling content without vertical page scrolling, except within a documented two-dimensional region.",
      "test_target": "Horizontally scrolling content at a height equivalent to 256 CSS pixels.",
      "required_state": "Each selected horizontally scrolling presentation at the 256 CSS-pixel-height equivalent.",
      "tool_or_command": "Genuine browser zoom and the inputs required by the content.",
      "expected": "Information and functionality remain available, and applicable content needs only horizontal scrolling.",
      "evidence_to_record": "Viewport/zoom evidence, screenshots, vertical-overflow location and task result.",
      "decision_effect": "Loss, overlap, obstruction or required vertical page scrolling fails unless confined to a supported exception.",
      "recovery_or_repeat": "Run this branch for content designed to scroll horizontally; do not omit it merely because most pages scroll vertically.",
      "novice_guidance": "The height branch is a separate normative branch, not optional wording attached to the width test.",
      "scenario_purpose": "For WCAG 1.4.10 Reflow, execute the named scenario: Test the 256 CSS-pixel-height branch. Target: Horizontally scrolling content at a height equivalent to 256 CSS pixels. Compare the observation with this result: Information and functionality remain available, and applicable content needs only horizontal scrolling.",
      "user_impact": "Users may lose information, controls, validation, navigation or task completion when content reflows. This scenario isolates that risk in the action named Test the 256 CSS-pixel-height branch.",
      "failure_observation": "After the tester completes the WCAG 1.4.10 Reflow scenario named Test the 256 CSS-pixel-height branch, the recorded observation for the target is inconsistent with the required result: Information and functionality remain available, and applicable content needs only horizontal scrolling.",
      "decision_rules": {
        "passed": "Record passed for the WCAG 1.4.10 Reflow scenario named Test the 256 CSS-pixel-height branch only when the evidence (Viewport/zoom evidence, screenshots, vertical-overflow location and task result.) supports: Information and functionality remain available, and applicable content needs only horizontal scrolling.",
        "failed": "Record failed when the action is completed and this failure observation is reproduced: After the tester completes the WCAG 1.4.10 Reflow scenario named Test the 256 CSS-pixel-height branch, the recorded observation for the target is inconsistent with the required result: Information and functionality remain available, and applicable content needs only horizontal scrolling.",
        "not_applicable": "No web content exists in the selected subject.",
        "blocked": "Record blocked, not passed, when The target is applicable, but a required state, environment, action or evidence item was not completed."
      },
      "limitations_and_claim_boundary": "This WCAG 1.4.10 Reflow scenario covers only the action named Test the 256 CSS-pixel-height branch for the recorded target and state. It contributes evidence to 1.4.10; apply the procedure's aggregation, complete-process and conformance-scope rules before making a broader decision."
    },
    {
      "step_id": "S4",
      "title": "Exercise obstruction and critical states",
      "phase": "test",
      "action": "At the relevant equivalent, open sticky content, navigation, dialogs and menus; trigger validation; test long unbroken strings; and complete critical success, interruption, recovery and confirmation paths.",
      "test_target": "Every applicable target in the selected process.",
      "required_state": "Both reflow equivalents where the content's scrolling direction makes them applicable.",
      "tool_or_command": "Keyboard plus any other input required by the process; browser layout inspection for overflow diagnosis.",
      "expected": "No information or function is clipped, overlapped, hidden behind sticky content or made unreachable.",
      "evidence_to_record": "State, action, viewport, affected content, actual result and screenshot or recording.",
      "decision_effect": "Any lost or unavailable information/function fails unless it is wholly within a supported two-dimensional exception.",
      "recovery_or_repeat": "Repeat this action for every required variation of Check reflow in both scrolling directions and after a material target, content, state, environment or configuration change. Preserve the original observation.",
      "novice_guidance": "A page can avoid a scrollbar yet still fail because content is clipped or controls are obscured.",
      "scenario_purpose": "For WCAG 1.4.10 Reflow, execute the named scenario: Exercise obstruction and critical states. Target: Every applicable target in the selected process. Compare the observation with this result: No information or function is clipped, overlapped, hidden behind sticky content or made unreachable.",
      "user_impact": "Users may lose information, controls, validation, navigation or task completion when content reflows. This scenario isolates that risk in the action named Exercise obstruction and critical states.",
      "failure_observation": "After the tester completes the WCAG 1.4.10 Reflow scenario named Exercise obstruction and critical states, the recorded observation for the target is inconsistent with the required result: No information or function is clipped, overlapped, hidden behind sticky content or made unreachable.",
      "decision_rules": {
        "passed": "Record passed for the WCAG 1.4.10 Reflow scenario named Exercise obstruction and critical states only when the evidence (State, action, viewport, affected content, actual result and screenshot or recording.) supports: No information or function is clipped, overlapped, hidden behind sticky content or made unreachable.",
        "failed": "Record failed when the action is completed and this failure observation is reproduced: After the tester completes the WCAG 1.4.10 Reflow scenario named Exercise obstruction and critical states, the recorded observation for the target is inconsistent with the required result: No information or function is clipped, overlapped, hidden behind sticky content or made unreachable.",
        "not_applicable": "No web content exists in the selected subject.",
        "blocked": "Record blocked, not passed, when The target is applicable, but a required state, environment, action or evidence item was not completed."
      },
      "limitations_and_claim_boundary": "This WCAG 1.4.10 Reflow scenario covers only the action named Exercise obstruction and critical states for the recorded target and state. It contributes evidence to 1.4.10; apply the procedure's aggregation, complete-process and conformance-scope rules before making a broader decision."
    },
    {
      "step_id": "S5",
      "title": "Repeat material variations and recovery",
      "phase": "test",
      "test_target": "Both reflow targets.",
      "required_state": "For WCAG 1.4.10 Reflow: Default, sticky-header/footer, menus, dialogs, validation, long-string, loading, error, recovery and confirmation states. Every selected responsive template and critical complete process.",
      "tool_or_command": "For WCAG 1.4.10 Reflow, use the same recorded method, then change only the state, environment or recovery condition being compared.",
      "action": "Repeat the WCAG 1.4.10 Reflow action for each inventoried variation that can change the outcome. Include relevant default, revealed, error, interruption, recovery and confirmation states and complete the selected process from start to finish where this test can affect task completion.",
      "expected": "Every material variation and required recovery path has its own reproducible observation; no unexecuted state is merged into a passing result.",
      "failure_observation": "After the tester completes the WCAG 1.4.10 Reflow scenario named Repeat material variations and recovery, the recorded observation for the target is inconsistent with the required result: Every material variation and required recovery path has its own reproducible observation; no unexecuted state is merged into a passing result.",
      "evidence_to_record": "Variation identifier; changed state or environment; start and end points; actual observation; recovery result; intervention; evidence reference and target outcome.",
      "decision_effect": "For WCAG 1.4.10 Reflow, a reproduced mismatch fails the affected target; an omitted required variation remains untested; conflicting evidence remains cannot tell.",
      "recovery_or_repeat": "Repeat this action for every required variation of Check reflow in both scrolling directions and after a material target, content, state, environment or configuration change. Preserve the original observation.",
      "novice_guidance": "For WCAG 1.4.10 Reflow, change one material condition at a time where practical. Do not assume that a passing default state covers errors, overlays, orientation changes, interruptions or recovery.",
      "limitations_and_claim_boundary": "This WCAG 1.4.10 Reflow scenario covers only the action named Repeat material variations and recovery for the recorded target and state. It contributes evidence to 1.4.10; apply the procedure's aggregation, complete-process and conformance-scope rules before making a broader decision.",
      "scenario_purpose": "For WCAG 1.4.10 Reflow, execute the named scenario: Repeat material variations and recovery. Target: Both reflow targets. Compare the observation with this result: Every material variation and required recovery path has its own reproducible observation; no unexecuted state is merged into a passing result.",
      "user_impact": "Users may lose information, controls, validation, navigation or task completion when content reflows. This scenario isolates that risk in the action named Repeat material variations and recovery.",
      "decision_rules": {
        "passed": "Record passed for the WCAG 1.4.10 Reflow scenario named Repeat material variations and recovery only when the evidence (Variation identifier; changed state or environment; start and end points; actual observation; recovery result; intervention; evidence reference and target outcome.) supports: Every material variation and required recovery path has its own reproducible observation; no unexecuted state is merged into a passing result.",
        "failed": "Record failed when the action is completed and this failure observation is reproduced: After the tester completes the WCAG 1.4.10 Reflow scenario named Repeat material variations and recovery, the recorded observation for the target is inconsistent with the required result: Every material variation and required recovery path has its own reproducible observation; no unexecuted state is merged into a passing result.",
        "not_applicable": "No web content exists in the selected subject.",
        "blocked": "Record blocked, not passed, when The target is applicable, but a required state, environment, action or evidence item was not completed."
      }
    },
    {
      "step_id": "S6",
      "title": "Decide each region and branch",
      "phase": "record",
      "action": "Record outcomes separately for the width branch, height branch, each exceptional region and each selected complete process. Preserve cantTell and untested results.",
      "test_target": "Both reflow targets and any excepted region.",
      "required_state": "All selected states completed.",
      "tool_or_command": "Execution worksheet and evidence references.",
      "expected": "The result shows which branch, region and process each decision covers.",
      "evidence_to_record": "Target outcomes, exception rationale, viewport evidence, limitations and issue references.",
      "decision_effect": "Completes procedure evidence without automatically establishing product-wide WCAG satisfaction.",
      "recovery_or_repeat": "Reopen affected results after layout, browser-support or content changes.",
      "novice_guidance": "Do not average a passing width branch with an untested height branch.",
      "scenario_purpose": "For WCAG 1.4.10 Reflow, complete the record for the scenario named Decide each region and branch and preserve evidence that demonstrates this result: The result shows which branch, region and process each decision covers.",
      "user_impact": "Users may lose information, controls, validation, navigation or task completion when content reflows. This scenario isolates that risk in the action named Decide each region and branch.",
      "failure_observation": "The WCAG 1.4.10 Reflow evidence or decision record for the scenario named Decide each region and branch does not demonstrate the required result: The result shows which branch, region and process each decision covers.",
      "decision_rules": {
        "passed": "Record passed for the WCAG 1.4.10 Reflow scenario named Decide each region and branch only when the evidence (Target outcomes, exception rationale, viewport evidence, limitations and issue references.) supports: The result shows which branch, region and process each decision covers.",
        "failed": "Record failed when the action is completed and this failure observation is reproduced: The WCAG 1.4.10 Reflow evidence or decision record for the scenario named Decide each region and branch does not demonstrate the required result: The result shows which branch, region and process each decision covers.",
        "not_applicable": "No web content exists in the selected subject.",
        "blocked": "Record blocked, not passed, when The target is applicable, but a required state, environment, action or evidence item was not completed."
      },
      "limitations_and_claim_boundary": "This WCAG 1.4.10 Reflow scenario covers only the action named Decide each region and branch for the recorded target and state. It contributes evidence to 1.4.10; apply the procedure's aggregation, complete-process and conformance-scope rules before making a broader decision."
    }
  ],
  "expectations": [
    {
      "expectation_id": "E1",
      "statement": "Vertical content reflows at the 320 CSS-pixel-width equivalent without horizontal page scrolling or loss.",
      "outcome_if_unmet": "failed"
    },
    {
      "expectation_id": "E2",
      "statement": "Horizontal content reflows at the 256 CSS-pixel-height equivalent without vertical page scrolling or loss.",
      "outcome_if_unmet": "failed"
    }
  ],
  "exceptions": [
    "Use only an exception stated in the relevant standard, or an agreed out-of-scope decision. Record the reason and evidence.",
    "A tool limitation, lack of time or unavailable assistive technology is a limitation or incomplete result, not a pass."
  ],
  "outcome_definitions": {
    "passed": "The applicable test target meets every expectation in this rule or procedure.",
    "failed": "The applicable test target does not meet at least one expectation in this rule or procedure.",
    "inapplicable": "The test subject contains no target that matches this rule or procedure's applicability.",
    "cantTell": "The tester cannot fully determine applicability or whether every expectation is met.",
    "untested": "The test subject or target was not evaluated using this rule or procedure."
  },
  "examples": [
    {
      "example_id": "A11Y-WCAG-017-EX-PASSED",
      "outcome": "passed",
      "scenario": "Representative calibration example, not client evidence. Procedure: WCAG 1.4.10 Reflow. Target: Both reflow targets. Action: Record every selected page, complete-process step and meaningful state. For the common 400% method, prepare a 1280 CSS-pixel-wide starting viewport for the 320-width branch and a 1024 CSS-pixel-high starting viewport for the 256-height branch. Evidence: Browser/version, OS scaling, starting CSS viewport, page/state and process step. Observed result: The starting viewport equivalents and selected state inventory are reproducible."
    },
    {
      "example_id": "A11Y-WCAG-017-EX-FAILED",
      "outcome": "failed",
      "scenario": "Representative calibration example, not client evidence. Procedure: WCAG 1.4.10 Reflow. Target: Both reflow targets. The tester completes the recorded action, but the captured evidence does not demonstrate: The starting viewport equivalents and selected state inventory are reproducible. The failed target and state remain separate from unexecuted targets."
    },
    {
      "example_id": "A11Y-WCAG-017-EX-INAPPLICABLE",
      "outcome": "inapplicable",
      "scenario": "Representative scope example, not client evidence. No web content exists in the selected subject. The completed inventory is retained as the basis for the inapplicable outcome."
    },
    {
      "example_id": "A11Y-WCAG-017-EX-CANTTELL",
      "outcome": "cantTell",
      "scenario": "Representative unresolved example, not client evidence. The viewport equivalent, overflow source or necessity of a two-dimensional layout cannot be determined after reasonable inspection. The record identifies the conflicting evidence and the expertise or comparison needed to resolve it."
    },
    {
      "example_id": "A11Y-WCAG-017-EX-UNTESTED",
      "outcome": "untested",
      "scenario": "Representative execution-gap example, not client evidence. The target is applicable, but a required state, environment, action or evidence item was not completed. The missing action, state or environment remains open and is not converted to a pass."
    }
  ],
  "sampling_rule": "Test every in-scope instance when practical. For a large population, document a sample that includes each template, content or control type, meaningful state and high-risk task.",
  "complete_process_requirement": "If this check is part of a user journey, test the selected journey from start to finish, including relevant errors and recovery. Record any path that was not tested.",
  "pass_criteria": "At the applicable 320 CSS-pixel-width and 256 CSS-pixel-height equivalents, information and functionality remain available without two-dimensional page scrolling, except within a specifically evidenced region that requires a two-dimensional layout for usage or meaning.",
  "fail_criteria": "Applicable content requires scrolling in two dimensions, or information or functionality is clipped, overlaps, becomes obscured or is unavailable, and no two-dimensional-layout exception applies.",
  "evidence_requirements": [
    "Browser/version, OS scaling, starting CSS viewport and final 400% equivalent for both branches.",
    "Selected pages, states, sticky layers, dialogs, validation, long strings and complete-process actions.",
    "Screenshots or recording showing overflow, clipping, overlap and task results.",
    "Region boundary, two-dimensional dependency and usage/meaning rationale."
  ],
  "official_source_ids": [
    "W3C-WCAG22",
    "W3C-WCAG22-QUICKREF",
    "W3C-REFLOW",
    "W3C-WCAG22-TECHNIQUES"
  ],
  "act_rule_mapping": {
    "format_alignment": "This is a project-authored manual procedure, not a W3C Approved ACT Rule.",
    "approved_rule_ids": [],
    "approved_rules": [],
    "mapping_status": "No supporting ACT rule selected",
    "registry_reviewed_at": "2026-08-27",
    "registry_source_id": "W3C-ACT-RULES",
    "mapping_rationale": "An ACT result can support only the part of this procedure covered by that rule. It does not replace the remaining manual or assistive-technology checks."
  },
  "technique_traceability": [
    {
      "wcag_criterion": "1.4.10",
      "understanding_url": "https://www.w3.org/WAI/WCAG22/Understanding/reflow.html",
      "techniques_registry_source_id": "W3C-WCAG22-TECHNIQUES",
      "technique_ids_applied": [],
      "failure_ids_applied": [],
      "selection_status": "Select relevant techniques during the test",
      "selection_note": "Techniques are examples, not extra requirements. Record any technique or common failure used, but decide the result against the success criterion."
    }
  ],
  "platform_ids": [
    "web-desktop-cross-browser"
  ],
  "review_requirement": "A qualified accessibility reviewer must confirm the scope, evidence and result before it is reported as final.",
  "known_issues": [
    "Check relevant browser, tool or assistive-technology release notes before assigning unexpected behaviour to the product.",
    "If responsibility is unclear, record the reproducible behaviour and use cannot tell until it is resolved."
  ],
  "change_log": [
    {
      "version": "2026.08.27-rc.9",
      "change": "Reworked for plain language, case-focused steps, scoped evidence and transparent draft review status."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Individually authored reference-procedure content prepared for competent review and execution."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Removed administrative filler steps, added contextual risk and result boundaries, and prepared the concise worksheet flow for internal consistency review."
    }
  ],
  "tags": [
    "sc-1.4.10",
    "wcag-2.2",
    "wcag-aa",
    "wcag_manual"
  ],
  "status": "draft",
  "authoring_readiness": "content_complete",
  "short_title": "Check reflow in both scrolling directions",
  "catalogue_version": "2026.08.27-rc.9",
  "identity": {
    "stable_case_id": "A11Y-WCAG-017",
    "procedure_title": "WCAG 1.4.10 Reflow",
    "short_user_centred_title": "Check reflow in both scrolling directions",
    "procedure_version": "2026.08.27-rc.9",
    "catalogue_version": "2026.08.27-rc.9",
    "status": "draft",
    "category": "wcag_manual",
    "procedure_type": "composite",
    "execution_class": "manual_with_automation_support",
    "intended_tester_expertise": "Accessibility tester",
    "effort_model": {
      "model": "component_effort_v2",
      "small_scope_minutes": {
        "minimum": 33,
        "maximum": 48
      },
      "warning": "Add a new per-target execution and evidence allowance for each additional target class or state that could produce a different result. Add setup time for each distinct environment.",
      "calculation_guidance": "Add the recorded setup, per-target execution, evidence and technical-review components; then apply the stated variation rule.",
      "unit": "minutes",
      "setup": {
        "typical": 10,
        "includes": "Confirm scope and target, prepare safe data, establish the required state and record the tool or environment version."
      },
      "per_target_execution": {
        "typical": 8,
        "includes": "Perform the procedure once for one target in its selected states; this excludes remediation and retesting."
      },
      "evidence_capture": {
        "typical": 7,
        "includes": "Capture, name and cross-reference the minimum reproducible evidence while removing unnecessary personal or secret data."
      },
      "technical_review": {
        "typical": 8,
        "includes": "Check applicability, observations, outcome logic, evidence sufficiency and report wording before issue publication."
      },
      "typical_total_range": {
        "minimum": 33,
        "maximum": 48
      },
      "assumptions": "one page or component state; add another execution block for each materially different template or state",
      "variation": "Add a new per-target execution and evidence allowance for each additional target class or state that could produce a different result. Add setup time for each distinct environment.",
      "excludes": "Client coordination, inaccessible-environment recovery, recruitment, legal review, remediation implementation and waiting time unless the procedure states otherwise."
    },
    "related_procedures": [],
    "replaces": [],
    "replaced_by": []
  },
  "purpose_and_user_impact": {
    "barrier_detected": "Detect content or controls that require two-dimensional scrolling, become clipped, overlap or disappear when enlarged.",
    "people_likely_affected": [
      "People with low vision who use browser zoom.",
      "People who need a narrow viewport or enlarged interface."
    ],
    "functionality_or_information_at_risk": "Users may lose information, controls, validation, navigation or task completion when content reflows.",
    "result_scope": "composite_criterion_assessment",
    "claim_boundary": "This WCAG 1.4.10 Reflow procedure determines whether the recorded targets meet WCAG 1.4.10 on web-desktop-cross-browser in the tested states. A broader conformance decision must also account for every applicable target in the declared scope, complete processes, accessibility-supported use and the other WCAG conformance requirements.",
    "why_it_matters": "Users may lose information, controls, validation, navigation or task completion when content reflows. The procedure is necessary because detect content or controls that require two-dimensional scrolling, become clipped, overlap or disappear when enlarged and the result can otherwise conceal a material barrier for the affected people named here."
  },
  "requirement_mappings": [
    {
      "source_id": "W3C-WCAG22",
      "requirement_id": "1.4.10",
      "requirement_level": "AA",
      "requirement_type": "conformance",
      "coverage_type": "full",
      "canonical_source": "https://www.w3.org/TR/WCAG22/",
      "source_status": "W3C Recommendation",
      "source_version_or_publication_date": "WCAG 2.2; 12 December 2024 Recommendation",
      "date_verified": "2026-08-27",
      "reviewer_notes": "Primary conformance mapping covering both the 320 CSS-pixel-width and 256 CSS-pixel-height branches.",
      "limitations": "The two-dimensional-layout exception applies only to content that requires that layout for usage or meaning; surrounding content and controls remain applicable.",
      "dependent_fields": [
        "applicability_model",
        "normative_exceptions",
        "steps",
        "decision_logic"
      ],
      "mapping_role": "primary_conformance_mapping"
    },
    {
      "source_id": "W3C-WCAG22-QUICKREF",
      "requirement_id": "W3C-WCAG22-QUICKREF",
      "requirement_level": "informative",
      "requirement_type": "advisory",
      "coverage_type": "supporting",
      "canonical_source": "https://www.w3.org/WAI/WCAG22/quickref/",
      "source_status": "living_guidance",
      "source_version_or_publication_date": "WCAG 2.2 supporting guidance",
      "date_verified": "2026-08-27",
      "reviewer_notes": "Supporting source. Procedure-level content review remains recorded separately.",
      "limitations": "This source does not override WCAG or create an additional WCAG conformance requirement.",
      "dependent_fields": [
        "prerequisites",
        "environment",
        "steps"
      ]
    },
    {
      "source_id": "W3C-REFLOW",
      "requirement_id": "W3C-REFLOW",
      "requirement_level": "informative",
      "requirement_type": "advisory",
      "coverage_type": "supporting",
      "canonical_source": "https://www.w3.org/WAI/WCAG22/Understanding/reflow.html",
      "source_status": "living_guidance",
      "source_version_or_publication_date": "Current first-party publication; exact version pending source review",
      "date_verified": "2026-08-27",
      "reviewer_notes": "Supporting source. Procedure-level content review remains recorded separately.",
      "limitations": "This source does not override WCAG or create an additional WCAG conformance requirement.",
      "dependent_fields": [
        "prerequisites",
        "environment",
        "steps"
      ]
    },
    {
      "source_id": "W3C-WCAG22-TECHNIQUES",
      "requirement_id": "W3C-WCAG22-TECHNIQUES",
      "requirement_level": "informative",
      "requirement_type": "advisory",
      "coverage_type": "supporting",
      "canonical_source": "https://www.w3.org/WAI/WCAG22/Techniques/",
      "source_status": "living_guidance",
      "source_version_or_publication_date": "Techniques for WCAG 2.2",
      "date_verified": "2026-08-27",
      "reviewer_notes": "Supporting source. Procedure-level content review remains recorded separately.",
      "limitations": "This source does not override WCAG or create an additional WCAG conformance requirement.",
      "dependent_fields": [
        "prerequisites",
        "environment",
        "steps"
      ]
    }
  ],
  "applicability_model": {
    "test_subject": "Content and functionality in selected pages, complete processes and meaningful states at the two normative reflow equivalents.",
    "test_targets": [
      "Vertically scrolling content at a width equivalent to 320 CSS pixels.",
      "Horizontally scrolling content at a height equivalent to 256 CSS pixels."
    ],
    "objective_questions": [
      "Does the page primarily scroll vertically, horizontally, or contain regions of both?",
      "Does any region require two-dimensional layout for usage or meaning?",
      "After reflow, are all information and functions available without two-dimensional page scrolling?"
    ],
    "subjective_judgements": [
      "Determine whether each claimed two-dimensional region truly requires both dimensions for usage or meaning; record why a one-dimensional presentation would fail."
    ],
    "inapplicability_conditions": [
      "The selected subject contains no web content to render at the reflow equivalents."
    ],
    "scope_exclusions": [
      "Only the qualifying two-dimensional content region is excepted. Page navigation, instructions, controls and surrounding content remain in scope."
    ],
    "required_states_and_variations": [
      "Default, sticky-header/footer, menus, dialogs, validation, long-string, loading, error, recovery and confirmation states.",
      "Every selected responsive template and critical complete process."
    ],
    "complete_process_dependencies": "Complete each selected critical process at the relevant reflow condition; a visually intact landing page does not establish process coverage.",
    "conforming_alternate_version_considerations": "Rely on a conforming alternate version only after the WCAG definition and all conformance conditions are verified for both versions and the mechanism used to reach the alternate."
  },
  "normative_exceptions": [
    {
      "name": "Two-dimensional layout required",
      "decision_condition": "A specific content region requires two-dimensional layout for usage or meaning, such as a map, diagram, video, game, presentation, data table or interface that must keep a toolbar visible while manipulating content.",
      "evidence_needed": "Region identifier, function/meaning, both-axis dependency and evidence showing why one-dimensional reflow would remove meaning or operation.",
      "common_misinterpretation": "Complexity, wide design, developer effort or the presence of any table does not exempt the entire page.",
      "official_source": "https://www.w3.org/WAI/WCAG22/Understanding/reflow.html",
      "scope_of_exception": "Only the qualifying content region; surrounding information and functionality remain subject to reflow."
    }
  ],
  "normative_exceptions_absent_reason": "",
  "environment": {
    "required_tester_expertise": "Accessibility tester",
    "required_platforms": [
      "web-desktop-cross-browser"
    ],
    "minimum_environment_fields": [
      "operating_system",
      "operating_system_version",
      "browser",
      "browser_version",
      "viewport_css_pixels",
      "input_method"
    ],
    "product_and_content_version_required": true,
    "viewport_and_orientation_required": true,
    "input_mode_required": true,
    "relevant_settings": [],
    "known_platform_limitations": [
      "Check relevant browser, tool or assistive-technology release notes before assigning unexpected behaviour to the product.",
      "If responsibility is unclear, record the reproducible behaviour and use cannot tell until it is resolved."
    ],
    "clean_state_requirements": [
      "Start from a documented clean or known state and record pre-existing preferences, extensions and cached data that can change the result."
    ],
    "test_data_and_privacy_constraints": [
      "Use authorised synthetic or controlled data.",
      "Do not record credentials, secrets or unnecessary personal data."
    ],
    "coverage_boundary": [
      "The result covers only the browsers, platforms, readers and assistive technologies that were actually tested.",
      "Do not apply a result from one technology combination to an untested combination or to every user."
    ]
  },
  "decision_logic": {
    "target_passed": "At the applicable 320 CSS-pixel-width and 256 CSS-pixel-height equivalents, information and functionality remain available without two-dimensional page scrolling, except within a specifically evidenced region that requires a two-dimensional layout for usage or meaning.",
    "target_failed": "Applicable content requires scrolling in two dimensions, or information or functionality is clipped, overlaps, becomes obscured or is unavailable, and no two-dimensional-layout exception applies.",
    "target_inapplicable": "No web content exists in the selected subject.",
    "target_cant_tell": "The viewport equivalent, overflow source or necessity of a two-dimensional layout cannot be determined after reasonable inspection.",
    "target_untested": "The target is applicable, but a required state, environment, action or evidence item was not completed.",
    "aggregation": "Preserve results for both branches, every page/state and each excepted region. A failure prevents a passed aggregate; cantTell and untested remain unresolved.",
    "wcag_requirement_decision": "A satisfied WCAG 1.4.10 decision requires all applicable content in the conformance scope and all conformance requirements to be considered. Sampled results disclose their coverage limitations.",
    "conforming_alternate_version_effect": "Apply a conforming alternate version only after its WCAG definition and every conformance condition have been verified and recorded; otherwise it does not change the decision.",
    "passed_automation_follow_up": "Automated overflow detection may identify candidates but cannot prove information/function availability or whether a two-dimensional layout is essential. A passed automated or ACT result must never set the criterion to satisfied automatically.",
    "platform_responsibility": "When responsibility is unclear, preserve the reproducible behaviour and environment evidence and use cantTell until a qualified reviewer resolves it.",
    "claim_readiness": "A complete result may become ready_for_review. Schema validity, a passed target or a tool result cannot make it ready_for_scoped_claim without the independent evidence and governance gates."
  },
  "evidence_specification": [
    {
      "evidence_id": "EV1",
      "method": "viewport_record",
      "record": "Browser/version, OS scaling, starting CSS viewport and final 400% equivalent for both branches.",
      "review_purpose": "Confirm genuine 320-width and 256-height equivalents.",
      "privacy_and_security": "Use a redacted extract or evidence reference. Do not include credentials, secrets or unnecessary personal data.",
      "required_for_formal_result": true
    },
    {
      "evidence_id": "EV2",
      "method": "state_and_process_record",
      "record": "Selected pages, states, sticky layers, dialogs, validation, long strings and complete-process actions.",
      "review_purpose": "Review coverage beyond the default page state.",
      "privacy_and_security": "Use a redacted extract or evidence reference. Do not include credentials, secrets or unnecessary personal data.",
      "required_for_formal_result": true
    },
    {
      "evidence_id": "EV3",
      "method": "visual_and_functional_evidence",
      "record": "Screenshots or recording showing overflow, clipping, overlap and task results.",
      "review_purpose": "Reproduce loss of information or functionality.",
      "privacy_and_security": "Use a redacted extract or evidence reference. Do not include credentials, secrets or unnecessary personal data.",
      "required_for_formal_result": true
    },
    {
      "evidence_id": "EV4",
      "method": "exception_decision",
      "record": "Region boundary, two-dimensional dependency and usage/meaning rationale.",
      "review_purpose": "Prevent whole-page or convenience-based exceptions.",
      "privacy_and_security": "Use a redacted extract or evidence reference. Do not include credentials, secrets or unnecessary personal data.",
      "required_for_formal_result": true
    }
  ],
  "calibration_examples": [
    {
      "example_id": "A11Y-WCAG-017-EX-PASSED",
      "outcome": "passed",
      "scenario": "At a 1280 CSS-pixel starting width and 400% zoom, article content reflows to one vertical column and its menu, errors and submit action remain available.",
      "explanation": "The 320-width branch retains information and function without horizontal page scrolling.",
      "fixture_id": "reflow-width-pass",
      "fixture_version": "1.0.0",
      "machine_testable": true
    },
    {
      "example_id": "A11Y-WCAG-017-EX-FAILED",
      "outcome": "failed",
      "scenario": "At the 320-width equivalent, a sticky footer covers the only submit button and cannot be dismissed.",
      "explanation": "Functionality is unavailable after reflow.",
      "fixture_id": "reflow-sticky-fail",
      "fixture_version": "1.0.0",
      "machine_testable": true
    },
    {
      "example_id": "A11Y-WCAG-017-EX-INAPPLICABLE",
      "outcome": "inapplicable",
      "scenario": "The evaluated subject is an audio file with no rendered web content.",
      "explanation": "No target matches the web-content applicability.",
      "fixture_id": "",
      "fixture_version": "",
      "machine_testable": false
    },
    {
      "example_id": "A11Y-WCAG-017-EX-CANTTELL",
      "outcome": "cantTell",
      "scenario": "A third-party viewer clips content, but the embedding page and provider behaviour cannot be isolated in the available environment.",
      "explanation": "The behaviour is reproducible but responsibility or exception applicability cannot be determined.",
      "fixture_id": "",
      "fixture_version": "",
      "machine_testable": false
    },
    {
      "example_id": "A11Y-WCAG-017-EX-UNTESTED",
      "outcome": "untested",
      "scenario": "The 320-width branch passed, but selected horizontal presentation at the 256-height equivalent was not executed.",
      "explanation": "One normative branch remains untested.",
      "fixture_id": "",
      "fixture_version": "",
      "machine_testable": false
    },
    {
      "example_id": "A11Y-WCAG-017-EX-PASSED",
      "outcome": "passed",
      "scenario": "A data table retains horizontal and vertical scrolling inside the table region while the page heading, instructions and controls reflow in one dimension.",
      "explanation": "The exception is limited to a table that requires two-dimensional layout; it does not exempt the page.",
      "fixture_id": "",
      "fixture_version": "",
      "machine_testable": false
    }
  ],
  "review_record": {
    "author": "",
    "method_reviewer": "",
    "independent_standards_reviewer": "",
    "accessibility_ui_reviewer": "",
    "author_date": "",
    "method_review_date": "",
    "standards_review_date": "",
    "ui_review_date": "",
    "source_versions_reviewed": [],
    "exceptions_reviewed": false,
    "known_limitations": [
      "This is a source-checked reference implementation subject to independent method and standards agent verification; formal approval remains separate."
    ],
    "open_issues": [
      "Independent standards review and manual calibration at genuine browser zoom remain required before status promotion."
    ],
    "decision": "pending",
    "next_review_date": "",
    "status_transition_reason": "",
    "release_gate_id": "",
    "release_gate_completed_at": "",
    "approval_authority": "",
    "approval_date": ""
  },
  "privacy_and_security": {
    "browser_storage": "Worksheet data is stored only in this browser's local storage until the user exports or clears it.",
    "network_transmission": "The static library does not upload worksheet data.",
    "data_minimisation": "Record only evidence necessary to reproduce and review the decision.",
    "redaction": "Remove credentials, secrets and unnecessary personal or participant data before export or sharing.",
    "retention_and_deletion": "Apply the engagement retention schedule and clear local browser data when it is no longer required."
  },
  "version_history": [
    {
      "version": "2026.08.27-rc.9",
      "change": "Reworked for plain language, case-focused steps, scoped evidence and transparent draft review status."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Migrated to professional catalogue schema v3 with separated outcomes, structured authority, applicability, evidence, decision and review records."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Individually prepared WCAG 1.4.10 procedure content mapped to current normative and informative sources and checked for internal consistency; competent review, real execution and formal claim authority remain separate."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Replaced migrated boilerplate with a case-specific reference implementation and completed independent agent content verification."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Added explicit preparation and variation/recovery steps plus a bounded representative worked example for paid-template use."
    },
    {
      "version": "2026.08.27-rc.9",
      "change": "Procedure guidance and presentation simplified without changing draft governance status."
    }
  ],
  "migration": {
    "from_schema": "accessibility-test-catalog.v2",
    "from_procedure_version": "2026.08.04.1",
    "migrated_at": "2026-08-27",
    "content_review_state": "commercial_completeness_upgrade_agent_verified",
    "stable_identifier_preserved": true,
    "legacy_url_preserved": true,
    "delivery_model": "professional_delivery_v2",
    "agent_content_validation": {
      "status": "complete",
      "method": "case_specific_semantic_and_operational_checks_v1",
      "checked_fields": [
        "target",
        "state",
        "tool",
        "action",
        "expected_observation",
        "failure_observation",
        "evidence",
        "outcome_rules",
        "claim_boundary",
        "compact_examples"
      ],
      "human_approval_effect": "none"
    }
  },
  "test_type": "conformance",
  "library_layer": "composite",
  "decision_branches": [],
  "supporting_guidance": [],
  "effort_guidance": {
    "unit": "minutes",
    "setup": {
      "typical": 10,
      "includes": "Confirm scope and target, prepare safe data, establish the required state and record the tool or environment version."
    },
    "per_target_execution": {
      "typical": 8,
      "includes": "Perform the procedure once for one target in its selected states; this excludes remediation and retesting."
    },
    "evidence_capture": {
      "typical": 7,
      "includes": "Capture, name and cross-reference the minimum reproducible evidence while removing unnecessary personal or secret data."
    },
    "technical_review": {
      "typical": 8,
      "includes": "Check applicability, observations, outcome logic, evidence sufficiency and report wording before issue publication."
    },
    "typical_total_range": {
      "minimum": 33,
      "maximum": 48
    },
    "assumptions": "one page or component state; add another execution block for each materially different template or state",
    "variation": "Add a new per-target execution and evidence allowance for each additional target class or state that could produce a different result. Add setup time for each distinct environment.",
    "excludes": "Client coordination, inaccessible-environment recovery, recruitment, legal review, remediation implementation and waiting time unless the procedure states otherwise."
  },
  "worked_examples": [
    {
      "example_id": "A11Y-WCAG-017-WORKED-001",
      "example_kind": "representative_synthetic_example",
      "context": "Representative synthetic example for WCAG 1.4.10 Reflow on a fictional, version-frozen product target; no client or participant execution occurred.",
      "inspected": "The tester follows S2 (Test the 320 CSS-pixel-width branch) using the target, required state, tool and repeat rule stated in this procedure.",
      "observed_output": "After the tester completes the WCAG 1.4.10 Reflow scenario named Test the 320 CSS-pixel-width branch, the recorded observation for the target is inconsistent with the required result: Information and functionality remain available, and applicable content needs only vertical scrolling.",
      "evidence_captured": [
        "example-evidence-001: target and state record for Vertically scrolling content at a width equivalent to 320 CSS pixels.",
        "example-evidence-002: contemporaneous observation from the named method — Viewport/zoom evidence, screenshots, horizontal-overflow location and task result.",
        "example-evidence-003: comparison note linking the actual observation to the expected result and claim boundary"
      ],
      "tester_reasoning": "The recorded observation does not demonstrate the expected result: Information and functionality remain available, and applicable content needs only vertical scrolling. The failed decision is limited to this synthetic target and state; unexecuted coverage is not inferred.",
      "decision": "failed",
      "completed_finding": {
        "finding_id": "A11Y-WCAG-017-example-finding-001",
        "title": "Check reflow in both scrolling directions: expected result is not demonstrated",
        "severity": "medium",
        "user_impact": "The represented barrier may affect People with low vision who use browser zoom.; People who need a narrow viewport or enlarged interface.",
        "evidence_refs": [
          "example-evidence-001",
          "example-evidence-002",
          "example-evidence-003"
        ]
      },
      "remediation_advice": "Change the represented target or process so it demonstrates this result: Information and functionality remain available, and applicable content needs only vertical scrolling. Then rerun the affected step and every dependent variation.",
      "reviewer_feedback": "The reviewer confirms applicability, environment, actual-versus-expected comparison, evidence references and bounded wording; unsupported product-wide or conformance language is removed.",
      "final_client_report_wording": "Synthetic training finding: the sampled Check reflow in both scrolling directions target does not meet the procedure expectation in the recorded state. User impact and broader scope require evidence from the buyer's real execution.",
      "retest_outcome": "Synthetic retest example: after the represented change, repeat the failed step plus material error and recovery states. Close the finding only when new evidence demonstrates the expected result; otherwise retain the non-pass outcome.",
      "claim_boundary": "This is a representative, synthetic worked example for training and calibration. It is not evidence from a client product, participant or real assistive-technology execution."
    }
  ]
}
