Co oznacza to kryterium
Czytana liniowo instrukcja musi zachować ten sam sens co jej widoczny układ. Jeżeli zamiana zdań zmienia przebieg działania, zapewnij poprawną kolejność także w danych przekazywanych oprogramowaniu. Położenie na ekranie nie określa samo kolejności odbioru.
Pomaga to osobom niewidomym, odbiorcom brajla, osobom słabowidzącym korzystającym ze zmienionej prezentacji oraz części osób z trudnościami czytania i rozumienia. Kolejność obsługi klawiaturą jest odrębnym zagadnieniem.
Przykłady błędów i poprawek
Instrukcja przygotowania paczki
Własny scenariusz: osoba czyta instrukcję przygotowania syntetycznej paczki. Widoczny porządek to „Włóż przedmiot do pudełka.” → „Zaklej pudełko taśmą.” → „Naklej etykietę na pudełko.”. Good udostępnia te same trzy zdania w tym samym porządku. Zamknięcie pudełka po włożeniu przedmiotu ma inne znaczenie operacyjne niż zamknięcie go przed tą czynnością.

Własna demonstracja Pracowni, 2026-10-02. Surowy obraz z rzeczywistego uruchomienia; daje kontekst, bez potwierdzenia odczytu czytnikiem.
Stan: /1-3-2/instructions/good, po uruchomieniu, zamknięte ustawienia, bez przewijania. Wszystkie trzy zdania są widoczne. Dane są syntetyczne; aplikacja nie nadaje paczki.
Bad: /1-3-2/instructions/bad. Widoczne dane, tekst, styl i pozycje pozostają identyczne. Programowy porządek pierwszych dwóch zdań jest zamieniony: „Zaklej pudełko taśmą.” → „Włóż przedmiot do pudełka.” → „Naklej etykietę na pudełko.”. Zamknięcie przed włożeniem zmienia przebieg instrukcji; brak innej udostępnionej poprawnej sekwencji w tym wariancie jest celową usterką fixture.
Źródłowe PNG good i bad są identyczne bajtowo; tutaj pokazujemy jeden wspólny obraz. Różnicę potwierdzają semantyka Fluttera i natywne snapshoty XCTest; nie jest to obserwacja mowy VoiceOver. Poprawka przywraca klucze rosnące zgodnie z instrukcją. W zwykłym pionowym układzie prostszym rozwiązaniem produkcyjnym jest usunięcie błędnych ręcznych kluczy i zachowanie naturalnej kolejności — brak kluczy również trzeba sprawdzić w wybranym odbiorniku. Jawne klucze zostawiono w fixture, aby jedna właściwość odtwarzała parę.
Kontrola: niezależne informacje
/1-3-2/independent/control przedstawia trzy samodzielne fakty jednego punktu: „Punkt odbioru: Pracownia.”, „Adres: ul. Przykładowa 10.”, „Godziny otwarcia: 9:00–17:00.”. Wizualnie są w tej kolejności, a API zwraca adres → nazwę → godziny, taką samą permutacją jak w bad. Ich znaczenie pozostaje zachowane, ponieważ każda etykieta zawiera własny kontekst; nie jest to proces ani jedna wypowiedź rozcięta między elementami.

Własna demonstracja Pracowni, 2026-10-02. Surowy obraz z rzeczywistego uruchomienia; daje kontekst, bez potwierdzenia odczytu czytnikiem.
Dowolność dotyczy tych trzech faktów, a nie całego ekranu czy kolejności słów w adresie. Kontrola chroni walidator przed regułą „różnica od top-to-bottom zawsze oznacza błąd”. Zgodność geometrii z odczytem nadal może poprawiać orientację; to rekomendacja użyteczności, nie dodatkowy warunek 1.3.2.
Inne błędy i poprawki — przykłady tekstowe
Materiały pomocnicze nie są normatywne. G57 wskazuje sprawdzenie znaczenia po linearyzacji; C27 proponuje zgodność DOM i widoku, C6 strukturę niezależną od CSS. To sposoby wykonania wymagania, nie jedyne dopuszczone implementacje. Własna usterka Fluttera jest analogią problemu kolejności, nie dosłownym wykonaniem błędu CSS F1.
| Problem i zakres materiału pomocniczego | Bariera i poprawka |
|---|---|
| F1: pozycjonowanie CSS zmienia znaczenie względem kolejności programowej | Przywrócić logiczny DOM i dopiero na nim budować układ. Inne położenie samodzielnego menu i artykułu samo nie dowodzi F1. |
| F49: tabela do układu HTML źle się linearyzuje | Sprawdzić odczyt wierszami i przepływ wewnątrz komórek; zastosować logiczną strukturę i układ CSS. Samo istnienie tabeli układu nie jest wystarczającą diagnozą. |
| F33: kolumny tekstu ułożone spacjami / tabulatorami | Czytnik może mieszać wiersze różnych kolumn; użyć logicznych akapitów i rzeczywistych kontenerów układu. |
| F34: tabela w zwykłym tekście ułożona białymi znakami | Zachować znaczący odczyt oraz relacje, używając struktury tabeli lub jednoznacznej prezentacji liniowej. |
| F32: białe znaki rozcinają słowo | Użyć właściwości typografii, np. C8 letter-spacing, zamiast zmieniać ciąg znaków. Spacje między słowami i spacje w inicjalizmie, gdy nie zmieniają interpretacji, nie są tym błędem. |
| Mieszane kierunki pisma | H34/H56 + G57: poprawne znaczniki kierunku i neutralnej interpunkcji; nie przestawiać treści źródłowej tylko dla uzyskania wyglądu. |
| PDF o kilku kolumnach | PDF3: sprawdzić rzeczywiste tagi i kolejność odczytu w odbiorniku po eksporcie; osobno tab order interaktywnych pól. Obraz stron ani sam eksport nie potwierdza poprawnego odczytu. |
Nie wykonano powyższych dodatkowych fixture WWW i PDF/RTL. Są kontekstem edukacyjnym jednego kryterium, nie nowymi zadaniami ani deklaracją częstości błędów.
Kiedy obowiązuje i gdzie są wyjątki
- Wymaganie normatywne uruchamia wpływ kolejności na znaczenie, a nie każda różnica między geometrią i drzewem. Kryterium nie zawiera odrębnej listy wyjątków; niezależna treść pozostaje poza tym warunkiem.
- Poprawna kolejność odczytu zachowuje znaczenie słów i akapitów. Może istnieć kilka poprawnych sekwencji; wystarczy udostępnić jedną.
- Programowa dostępność oznacza dane autora, które oprogramowanie, w tym technologie asystujące, potrafi wyodrębnić i przedstawić w innej modalności. Obiekt w kodzie lub sama pozycja na screenshotcie nie wystarcza.
- Dwa niezależne artykuły mogą zmienić kolejność jako całe bloki. Nie oznacza to dowolności mieszania ich zdań. Kontrola niezależnych danych dotyczy kolejności całych, samodzielnych etykiet; nie kolejności słów wewnątrz nich.
- Numerowanie nie zastępuje poprawnej programowej sekwencji; może pomagać rozpoznać zależności, ale nie należy zmuszać odbiorcy do układania fragmentów w pamięci. Demonstracja celowo nie używa numerów ani wyrazów „najpierw/potem”, aby zmieniona kolejność sama przekazywała inny przebieg.
Kolejność odczytu a kolejność fokusu
1.3.2 bada znaczenie kolejno odbieranej treści, również zwykłego tekstu. 2.4.3 bada kolejność otrzymywania fokusu przez komponenty przy nawigacji sekwencyjnej, gdy ma ona wpływ na znaczenie lub obsługę. Tab może pomijać tekst, który czytnik nadal czyta. Fokus dostępności VoiceOver na tekście nie jest automatycznie fokusem klawiatury.
Zmiana tabindex, FocusTraversalOrder lub focusOrder nie naprawia sama kolejności statycznego tekstu w API dostępności. Semantics.sortKey z tej demonstracji nie stanowi testu kolejności klawiatury. Zdania nie mają akcji tap; nie dodano im sztucznej interaktywności. Test dotknięcia ustawień potwierdza przełączenie wariantu, nie 2.4.3. Nie wykonano badania zgodności 2.4.3.
1.3.1 osobno bada strukturę i relacje. W naszej parze nazwy, nagłówek i grupowanie są takie same; jedyną istotną różnicą jest kolejność trzech zdań w semantyce.
Platformy
Warunek: kolejność prezentowanych części wpływa na znaczenie, np. fragmenty zdania, akapity opowieści lub zależne kroki instrukcji. Brak instrukcji nie wyłącza innych znaczących sekwencji na danym ekranie.
| Środowisko | Zastosowanie i warunek | Weryfikacja |
|---|---|---|
| WWW i aplikacje webowe, również w telefonie | Bez zmiany wymagania WCAG; liniowy odczyt tekstu, DOM i układ CSS muszą zachować znaczenie. | Research, bez uruchomienia odbiornika webowego. |
| Aplikacje mobilne iOS i Android | WCAG2ICT: bez zmiany wymagania; kolejność w usługach dostępności musi zachować znaczenie instrukcji i innych zależnych treści. | Flutter/Cupertino: testy, build i XCTest na iOS Simulator PASS; VoiceOver NOT-RUN. Androida nie uruchamiano. |
| Aplikacje desktopowe | WCAG2ICT: bez zmiany wymagania, np. instrukcja w panelach dokumentu. | Research, bez wykonania. |
| Dokumenty cyfrowe poza WWW | WCAG2ICT: bez zmiany wymagania; np. czytanie wielokolumnowego PDF w logicznej kolejności. | Research, bez testu dokumentu/odbiornika. |
| Oprogramowanie kiosku lub telewizora | Otwarta część webowa/natywna jak wyżej. Przy funkcjonalności zamkniętej potrzebna adaptacja do dostępnego wyjścia niewizualnego, np. wbudowanego odczytu w znaczącej kolejności. | Research WCAG2ICT; konkretne urządzenie zamknięte nieustalone i nietestowane. |
WCAG2ICT jest wskazówką interpretacyjną i stosuje 1.3.2 bez zmiany brzmienia do dokumentów oraz oprogramowania poza treścią webową. Jego uwaga o funkcjonalności zamkniętej nie jest zwolnieniem z przekazania znaczenia. Hybryda wymaga rozpatrzenia treści webowej i natywnej osobno. Klasyfikacja nie rozstrzyga obowiązków prawnych ani wymagań sprzętowych i nie zleca buildów innych platform.
Źródło nie wskazuje daty wydania użytej WCAG2ICT. Zachowujemy jego datę i status odczytu; konwersja nie jest ponowną weryfikacją normy.
Rozwiązania w technologiach
Przegląd oficjalnej dokumentacji: AI, 2026-10-02. Wspólna reguła: utrzymywać treść w logicznej kolejności i zachować całe znaczące grupy. Jawne priorytety stosować, gdy domyślny odczyt układu jest niewłaściwy; sprawdzić wynik, zakres grupy i brak pominięć. Nie scalać całej strony z interaktywnymi elementami w jedną etykietę tylko dla wymuszenia porządku.
Flutter
Minimalny kontekst jawnej kolejności dla niestandardowego układu; lines to trzy zdania packingInstructions z kodu demonstracji:
import 'package:flutter/cupertino.dart';
import 'package:flutter/semantics.dart';
Widget instructionGroup(List<String> lines) => Semantics(
container: true,
explicitChildNodes: true,
child: Column(children: [
for (var i = 0; i < lines.length; i++)
Semantics(
container: true,
sortKey: OrdinalSortKey(i.toDouble()),
child: Text(lines[i]),
),
]),
);OrdinalSortKey porządkuje rosnąco w grupie, a opcjonalne name wprowadza dodatkowe grupowanie; nie mieszać typów kluczy ani arbitralnych nazw. Fixture good używa 0/1/2, bad i control 1/0/2. Pełna aplikacja przechodzi analizę, build, test semantyki i XCTest. Powyższa skrócona funkcja jest fragmentem edukacyjnym tego samego rozwiązania, nie osobno uruchomioną aplikacją. Najprostszy zwykły Column często wystarcza; sortowanie nie jest wymaganiem WCAG.
iOS / SwiftUI
import SwiftUI
struct SequenceView: View {
var body: some View {
VStack(alignment: .leading) {
Text("Włóż przedmiot do pudełka.")
Text("Zaklej pudełko taśmą.")
Text("Naklej etykietę na pudełko.")
}
.accessibilityElement(children: .contain)
}
}Kontener zachowuje dzieci jako grupę, bez zastępowania ich jedną etykietą. Przy potrzebie jawnej korekty accessibilitySortPriority działa względem elementów na tym samym poziomie; wyższa wartość wcześniej, odwrotnie niż liczba Fluttera/Compose. Typy powyższego fragmentu sprawdzono Xcode 27.0 / SDK Simulator 27.0 / target iOS 17: PASS. Bez uruchomienia osobnej aplikacji SwiftUI i bez VoiceOver; build Fluttera nie weryfikuje tego fragmentu na żywo.
Android / Compose
import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.semantics.isTraversalGroup
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.traversalIndex
@Composable
fun InstructionGroup(lines: List<String>) {
Column(Modifier.semantics { isTraversalGroup = true }) {
lines.forEachIndexed { index, line ->
Text(line, Modifier.semantics { traversalIndex = index.toFloat() })
}
}
}lines musi już zawierać poprawny porządek zdań. isTraversalGroup ogranicza grupę, traversalIndex porządkuje jej elementy z semantyką rosnąco. Domyślna wartość to 0; grupowanie, scalanie semantyki i zIndex mogą wpływać na wynik. To przykład jawnej korekty dla układu wymagającego wskazówek; zwykła poprawna struktura może wystarczyć. Dokumentacja sprawdzona; kompilacja i TalkBack NOT-RUN. Nie uruchomiono Androida ani nie przygotowano jego nowej demonstracji.
React Native
import React from 'react';
import { Text, View } from 'react-native';
export function InstructionGroup() {
return (
<View>
<Text>Włóż przedmiot do pudełka.</Text>
<Text>Zaklej pudełko taśmą.</Text>
<Text>Naklej etykietę na pudełko.</Text>
</View>
);
}Utrzymać źródło i układ w tej kolejności; nie odwracać samego widoku przez column-reverse lub pozycjonowanie. Dla bardziej złożonego układu oficjalne experimental_accessibilityOrder wskazuje kolejność nativeID, ale pozostaje eksperymentalne i dokumentacja odradza produkcję. Lista jest wyczerpująca: pominięte elementy mogą zniknąć z nawigacji AT; nie włącza automatycznie accessible. Nie zalecamy tego API jako domyślnej poprawki. Dokumentacja sprawdzona; fragment nie był kompilowany ani uruchamiany.
Jak sprawdzić
- Ustal, czy przestawienie części zmienia znaczenie. Rozpatrz całe bloki samodzielnych informacji i granice grup, nie tylko odczyt od góry ekranu.
- Porównaj widoczny przebieg „włóż → zaklej → naklej” z kolejnością udostępnioną w API. Oczekiwane good: ta kolejność bez braków i duplikatów; bad: zamiana pierwszych zdań. Same identyczne obrazy tego nie rozstrzygają.
- Sprawdź kontrolę: adres → nazwa → godziny zachowuje sens trzech samodzielnych faktów. Inna geometria nie jest automatycznym FAIL. Dotknięcie ustawień sprawdza zmianę wariantu, bez dowodu kolejności klawiatury.
- Użyj rzeczywistego odbiornika: odczyt ciągły, następny i poprzedni element, również granice grup. Zapisz faktyczne wypowiedzi lub brajl, zamiast podkładać drzewo lub syntezę.
- Dla treści wielokolumnowej, RTL i dokumentów sprawdź rzeczywistą linearyzację i wynikowy eksport. Nie przenoś wyniku małej mobilnej instrukcji na inne formaty.
Próba VoiceOver good/bad/control pozostaje niewykonanym planem źródłowym. Oczekiwane wypowiedzi opisano powyżej; nie są nagraną obserwacją.
Weryfikacja i ograniczenia
Źródłowe wykonanie z 2026-10-02: Flutter 3.44.9 / Dart 3.12.2, Cupertino, iPhone 17 / iOS Simulator 26.5. Nie jest to nowe wykonanie podczas konwersji.
| Sprawdzenie | Wynik i granica |
|---|---|
| Wymaganie, techniki i oficjalne API | Przegląd AI 2026-10-02; człowiek niewykonany |
| Flutter | Analiza PASS, końcowy zakres 10 testów PASS, build iOS PASS; bad/good/control, geometria, brak akcji tap, zmiana/reset |
| Zainstalowana aplikacja iOS | 1 XCTest / 0 failures, 30,467 s; trzy trasy, kolejność snapshotu i działania ustawień |
| Media i semantyka | 3 PNG, semantyka Fluttera i native snapshoty XCTest; good/bad mają identyczne bajty obrazu |
| SwiftUI | Typecheck PASS, Xcode 27.0 / SDK Simulator 27.0 / cel iOS 17; brak osobnej aplikacji |
| VoiceOver, brajl, fizyczny iPhone, człowiek | NOT-RUN; brak audio i transkrypcji |
| WWW, PDF, RTL, większy tekst, Compose i React Native | Odpowiednie próby i runtime niewykonane |
Historycznie wywołanie testów bez nazw plików nie znalazło *-test.dart. Pełna lista dała 13 PASS, w tym trzy hostowe warianty Material z override Androida; końcowe 10 PASS je wyklucza. Żaden z tych wyników nie oznacza wykonania SDK lub urządzenia Android.
Fizyczny iPhone był offline, a runtime symulatora 26.5 nie udostępniał nowego XCUIVoiceOverService wymagającego iOS 27. Sam SDK 27 nie aktualizuje runtime. To ograniczenie tamtej próby, bez twierdzenia, że czytnik nigdy nie działa w symulatorze.
Reguła znanej pary może sprawdzić zależność „włóż przed zaklej”. PASS odtworzenia bad potwierdza celową usterkę, a nie spełnienie WCAG. Surowa kolejność obiektów, hit test, geometria i snapshot XCTest są przybliżeniami, bez dowodu mowy lub brajla. AI może wskazać zależność językową, ale nie każda treść ma jedną poprawną sekwencję. Człowiek ocenia znaczenie, grupowanie, kompletność i inne poprawne porządki.
Oczekiwania, nazwy tras i manifest fixture pozostają poza wejściem badanego walidatora. W źródłowej demonstracji nie wdrożono ani nie zmierzono niezależnego walidatora. Brak odczytu i brak wykrycia błędu nie dają pozytywnego wyniku.
Jak sprawdza Clearship
Clearship porównuje kolejność tekstowych dzieci kontenera z układem oraz szuka kolumn czytanych na przemian. Reguła rozpoznaje samodzielne informacje z własnymi etykietami i nie zgłasza ich tylko za inną kolejność. Android ma także kandydata ATF dla cykli i sprzecznych ograniczeń traversal.
Wersja structure-sequence-2 z 2026-10-09 jest metodą deterministyczną dla treści natywnej. Android spełnił próg pomiaru kontrolnego w ograniczonym zakresie; iOS miał wynik rozwojowy 9/10 i 0 fałszywych alarmów na 26 poprawnych ekranach, bez pomiaru kontrolnego. iOS wymaga dalszej oceny człowieka. Kolejność drzewa jest przybliżeniem czytnika; RTL, treść webowa, znaczenie dowolnej sekwencji i rzeczywisty odczyt pozostają poza tą metodą. Wynik nie potwierdza całego 1.3.2.