3.2.4Poziom AA

Spójna identyfikacja

Consistent Identification

Powtarzane komponenty o tym samym wyniku zachowują rozpoznawalną identyfikację w zbiorze stron.

Komu pomaga
Pamięć i koncentracjaNiewidzenieSłabowidzenie
Zastosowanie
WWWAplikacje mobilneAplikacje desktopoweDokumenty cyfroweInne urządzenia

Warunki i wyjątki opisano w artykule.

Wersja
WCAG 2.2, wprowadzone w 2.0
Zasada / wytyczna
Zrozumiałość / 3.2
Stan researchu
Draft AI. Bez przeglądu człowieka.
Redakcja artykułu
· wersja robocza
Na tej stronie

Co oznacza to kryterium

Powtarzane komponenty wykonujące tę samą funkcję w zbiorze stron mają zachować rozpoznawalną identyfikację. Użytkownik powinien znaleźć znane działanie dzięki zapamiętanej nazwie lub ikonie. Tekst może uwzględniać kontekst, jeżeli nadal jasno identyfikuje funkcję.

Potrzeba Jak pomaga spójna identyfikacja
cognitive — Pamięć i koncentracja Znana nazwa ogranicza ponowne uczenie się działania na kolejnej stronie.
blindness — Niewidzenie Rozpoznawalna nazwa dostępna pomaga odnaleźć tę samą funkcję bez obrazu.
low-vision — Słabowidzenie Stały tekst lub znak ułatwia rozpoznanie w oglądanym fragmencie interfejsu.

To przypisanie potrzeb wynika z bariery, bez badania doświadczeń użytkowników AT.

Przykłady błędów i poprawek

Własna Pracownia ma dwie strony HTTP jednego autora i celu: Start i Zamówienia. Użytkownik wpisuje syntetyczne P-104, wyszukuje zamówienie na Starcie, przechodzi do Zamówień i powtarza wyszukiwanie. Dane, styl i działanie są wspólne; good/bad różnią się identyfikacją drugiej instancji.

Problem: Szukaj staje się Znajdź, choć oba działania zwracają „P-104: gotowe. Dwa kubki.”. Skutek: nowa nazwa sugeruje inne działanie i wymusza jego rozpoznawanie. Poprawka: wspólny komponent zachowuje widoczny tekst i dostępną nazwę Szukaj.

Wariant Start → Zamówienia Rzeczywisty wynik
good Szukaj → Szukaj Ten sam status P-104 w obu instancjach.
bad Szukaj → Znajdź Ten sam status; nieuzasadniona zmiana nazwy odtwarza F31.
control Szukaj → Godziny odbioru Status zamówienia → odbiór 6 października, 16:00–18:00. Różne funkcje nie są parą tego wymagania.
Start good: przycisk Szukaj i wynik P-104: gotowe. Dwa kubki.

2026-10-04, rzeczywista strona HTTP Pracowni w Codex IAB/macOS. Po wyszukaniu P-104 pierwsza instancja ma nazwę Szukaj; kadr nie dowodzi samodzielnie funkcji drugiej instancji.

Zamówienia good: Szukaj i ten sam wynik P-104.

Po przejściu ze Startu i ponownym wyszukaniu nazwa oraz wynik pozostają spójne. Sekwencja DOM/AX i zwykłych wejść potwierdza wynik obu instancji; nie jest testem czytnika.

Start bad: Szukaj zwraca P-104: gotowe. Dwa kubki.

Pierwsza instancja bad nadal używa nazwy Szukaj. Wspólne dane i lokalny wynik pozwalają porównać ją z drugą instancją w Zamówieniach.

Zamówienia bad: Znajdź zwraca ten sam wynik P-104.

Po zwykłym przejściu ta sama funkcja nazywa się Znajdź. Para odtwarza nieuzasadnioną zmianę identyfikacji w rzeczywistym zbiorze stron; nie jest znaleziskiem w aplikacji klienta.

Mobilna analogia

Flutter/Cupertino odtwarza tę samą parę wewnątrz jednej aplikacji. Spójność jest tu dobrą praktyką. Normatywny warunek zbioru programów nie zachodzi; sam podobny interfejs nie zmienia tego zakresu.

iOS good w Zamówieniach: Szukaj i wynik dwóch kubków P-104.

iPhone 17 Simulator / iOS 26.5, końcowa próba 2026-10-04. Nazwa Szukaj pokazuje dobrą praktykę jednego programu; widoki tej aplikacji nie tworzą zbioru programów WCAG2ICT.

iOS bad w Zamówieniach: Znajdź i identyczny wynik P-104.

Końcowa natywna próba po dotknięciu Znajdź. XCTest potwierdza nazwę i wynik, lecz mobilnej analogii nie kwalifikujemy jako normatywnego FAIL zbioru programów ani jako odczytu VoiceOver.

Kiedy obowiązuje i gdzie są wyjątki

Ta sama funkcjonalność oznacza ten sam wynik po użyciu. Nie rozstrzyga o niej wspólny handler, string, identyfikator, ikona lub URI. Trzeba ustalić zakres danych, skutek i kontekst użytkownika, następnie uruchomić funkcję; ten sam adres może dawać różne wyniki, a różne adresy równoważne.

Normatywny zbiór WWW tworzą strony ze wspólnym celem i autorem/grupą/organizacją. Strona jest zasobem pobranym z URI przez HTTP wraz z renderowanymi zasobami; nie każdy wewnętrzny ekran jest oddzielną stroną. Odrębne wersje językowe są odrębnymi zbiorami. Powtarzane wyszukiwanie w naszym wspólnym szablonie występuje na /home.html i /orders.html: dwa rzeczywiste zasoby HTTP jednego autora, służące obsłudze zamówień Pracowni.

Rozpoznawalność odnosi się do powtarzanych instancji komponentu. Niezależny link „Kontakt” w stopce i kontekstowy link do wsparcia w treści polityki nie muszą być tym samym powtarzanym komponentem, choć oba prowadzą do kontaktu. Dwa wyszukiwania w nagłówku i stopce mogą natomiast być takimi instancjami, także na jednej stronie. Treść niefunkcjonalna nie jest przedmiotem tego SC; jej spójność jest dobrą praktyką.

Spójność nie wymaga zawsze identycznych stringów. „Strona 4” oraz „Poprzednia strona” oglądane ze strony 5 mogą identyfikować ten sam cel w rozpoznawalnym kontekście; „Przejdź do strony 4/5” uwzględnia cel kolejnej strony. W responsive widoczny „Szukaj” i lupa z dostępną nazwą „Szukaj” mogą zachować rozpoznawalność. Nie daje to zgody na dowolne synonimy: recurring „Search”/„Find” jest wskazanym błędem, a F31 obejmuje również „Save page”/„Save” dla tej samej funkcji.

Widoczna etykieta, dostępna nazwa, alternatywa tekstowa i ikona są sposobami identyfikacji. Stała nazwa dostępna „Zapisz” nie usuwa wizualnego problemu zamiany dyskietki na checkmark dla tej samej funkcji zapisu. Ta sama ikona drukarki przy drukowaniu faktury i potwierdzenia nie uruchamia wymogu 3.2.4 między tymi różnymi wynikami; dokładne etykiety są nadal dobrą praktyką i mogą podlegać innym SC.

G197 jest techniką wystarczającą, stosowaną z odpowiednimi technikami 1.1.1 i 4.1.2 dla nazw i alternatyw. Jej procedura wymaga identycznego tekstu powiązanego z komponentami tej samej funkcji; to droga bardziej restrykcyjna niż minimalna norma. Niespełnienie procedury G197 samo nie dowodzi FAIL 3.2.4. F31 jest opisem błędu, nie uniwersalnym testem nierówności stringów; zawiera też przykład dopuszczalnych kontekstowych PageN. Nie należy twierdzić, że wszystkie różnice etykiet są dopuszczalne.

Katalog ACT sprawdzony 2026-10-04 nie zawiera reguł dla 3.2.4. Reguły innych SC dla niepustej nazwy linku/pola lub relacji nazwy do widocznej etykiety nie ustalają spójności całego zbioru i rzeczywistych wyników. Silnik ACT NOT-RUN; własny checker nie jest ACT.

Platformy

Każdy wiersz dotyczy 3.2.4. Weryfikacja interpretacji: AI, 2026-10-04, człowiek NOT-RUN. Podstawą dla WWW jest normatywne WCAG 2.2; poza WWW korzystamy z informacyjnej wskazówki WCAG2ICT 2.2 Group Note 2025-12-11, która nie jest normą zgodności ani ustaleniem obowiązku prawnego.

ID / środowisko Podstawa, stan i adaptacja Warunek, zakres i uzasadnienie Wykonanie
web — WWW WCAG 2.2, 3.2.4; dotyczy warunkowo, bez zmiany Powtarzany komponent o tym samym wyniku w zbiorze stron wspólnego autora/celu. Obejmuje również kilka instancji na tej samej stronie w obrębie zbioru; telefon nie zmienia podstawy treści webowej. Rzeczywisty zbiór HTTP Pracowni na macOS; mobilna przeglądarka NOT-RUN.
mobile — aplikacje mobilne WCAG2ICT, 3.2.4; dotyczy warunkowo, z adaptacją zbioru Zbiór programów rozprowadzanych razem, uruchamianych/używanych niezależnie, wzajemnie połączonych metodą nawigacji w każdym z nich. Takie zbiory są bardzo rzadkie. Widoki jednej aplikacji nie są takim zbiorem; spójność wewnątrz programu jest dobrą praktyką. Flutter/Cupertino na iOS Simulator: analogia dobrej praktyki. Normatywny warunek zbioru nie dotyczy badanego natywnego scenariusza.
desktop — aplikacje desktopowe WCAG2ICT, 3.2.4; dotyczy warunkowo, ta sama adaptacja Sprawdzić rzeczywisty zbiór programów; sam pakiet biurowy lub menu systemowe nie wystarcza. Przenoszenie wiedzy między widokami pojedynczego programu pozostaje dobrą praktyką. Native desktop NOT-RUN; desktopowy odbiornik WWW pozostaje web.
document — dokumenty cyfrowe WCAG2ICT, 3.2.4; dotyczy warunkowo, zbiór dokumentów Wspólny autor/cel, publikacja razem i wzajemne odniesienia nazwą lub linkiem, np. wieloczęściowy raport w oddzielnych plikach. Samo późniejsze spakowanie plików nie tworzy zbioru. Spójność w pojedynczym dokumencie to dodatkowa dobra praktyka. Dokument i jego odbiornik NOT-RUN.
other — oprogramowanie kiosku lub telewizora WCAG2ICT, 3.2.4; dotyczy warunkowo, zbiór programów; dla WWW jak web Wyznaczyć część webową/natywną. Brak niezależnego uruchamiania oznacza brak takiego zbioru; closed functionality wymaga osobnej oceny dostępności i nie jest ogólnym zwolnieniem urządzenia. Tabela nie ocenia sprzętu. Kiosk/TV NOT-RUN.

Nie ustalano wymagań EN 301 549 ani podstaw prawnych. Brak wykonania nie oznacza „braku odpowiednika w normie” lub wyłączenia platformy. Części natywną i webową hybrydy rozpatrywać osobno. Definicje zbiorów i warunki są istotniejsze niż etykieta systemu operacyjnego.

Rozwiązania w technologiach

Wspólne rozwiązanie: przechowuj nazwę rozpoznanej funkcji w jednym komponencie lub zasobie lokalizacji, powtarzaj go tam, gdzie rzeczywiście powtarza się funkcja i kontekst. Nie naprawiaj samej nazwy dla czytnika, pozostawiając niespójny tekst/ikonę. Dla odrębnej funkcji wybierz opis jej działania. Oficjalne API poniżej sprawdzone 2026-10-04; uproszczone fragmenty są edukacyjne i nie zastępują testu całej aplikacji.

Flutter / Dart

import 'package:flutter/cupertino.dart';
class OrderSearchAction extends StatelessWidget {
  const OrderSearchAction({super.key, required this.search});
  final VoidCallback search;
  @override
  Widget build(BuildContext context) => CupertinoButton(
    onPressed: search,
    child: const Text('Szukaj'),
  );
}

Obie instancje używają tego samego komponentu i funkcji wyszukiwania tego samego zakresu danych. Text zapewnia nazwę standardowego przycisku; jawny override powinien zachować jej znaczenie. Oficjalne CupertinoButton/Semantics odczytano; pełna demonstracja używa dodatkowych identyfikatorów Semantics do odczytów. Flutter 3.44.9, Dart 3.12.2: pełna aplikacja analiza/build/runtime iOS wykonane. Powyższy skrót nie był osobno kompilowany.

iOS / SwiftUI

import SwiftUI
struct OrderSearchAction: View {
    let search: () -> Void
    var body: some View {
        Button("Szukaj", action: search)
    }
}

Powtarzaj widok przy tym samym wyszukiwaniu. Dokumentacja Apple Button potwierdza etykietę opisującą działanie; Label z symbolem może obsługiwać prezentację ikony z nazwą, lecz trzeba sprawdzić rozpoznawalność w kontekście. Odczyt oficjalnego JSON po niedostępnym odbiorniku Markdown. Typecheck/build/runtime SwiftUI NOT-RUN. XCTest Swift jest harnessiem, nie aplikacją SwiftUI; nie przypisujemy mu wersji wykonania fragmentu.

Android / Jetpack Compose

import androidx.compose.runtime.Composable
import androidx.compose.material3.Button
import androidx.compose.material3.Text
@Composable
fun OrderSearchAction(search: () -> Unit) {
    Button(onClick = search) { Text("Szukaj") }
}

Semantyka Button scala tekst potomka; unikaj przypadkowego zastąpienia go innym contentDescription. Wystąpienia tego samego wyszukiwania zachowują nazwę, a ewentualna dekoracyjna ikona nie zastępuje celu. Oficjalna dokumentacja semantyki i Button sprawdzona. Kompilacja/runtime Kotlin/Compose oraz Android NOT-RUN, bez osobnej aplikacji, zależności ani zadania ich testowania.

React Native

import { Pressable, Text } from 'react-native';
export function OrderSearchAction({ search }: { search: () => void }) {
  return (
    <Pressable
      accessible
      accessibilityRole="button"
      accessibilityLabel="Szukaj"
      onPress={search}
      style={{ padding: 16 }}
    >
      <Text>Szukaj</Text>
    </Pressable>
  );
}

Widoczny tekst i jawna nazwa są spójne; wspólny komponent pomaga zachować je w obu instancjach. Oficjalne Pressable/accessibilityLabel sprawdzone. Typecheck/build/runtime RN/TS NOT-RUN, bez deklaracji użytej wersji RN.

HTML / CSS / JavaScript

<form method="get" action="/orders.html">
  <label for="order-query">Numer zamówienia</label>
  <input id="order-query" name="q" />
  <button name="action" value="search">Szukaj</button>
</form>

To szkic komponentu osadzanego na stronach wspólnego zbioru. Serwer musi faktycznie obsłużyć q/action i zwrócić ten sam zakres wyników; sam zapis href/action tego nie dowodzi. Oficjalny HTML forms/button sprawdzony; pełny serwer działa na standardowej bibliotece Pythona, bez frameworka, renderuje good/bad/control, reset i fallback. Jego rzeczywiste działanie HTTP oraz odbiornik WWW wykonano; skrót osobno NOT-RUN. Zmiana CSS nie może zaburzać rozpoznawalności funkcjonalnej ikony.

Jak sprawdzić

  1. Wyznacz rzeczywisty zbiór i dopasuj powtarzane instancje komponentu. Ustal autora, cel, kontekst i dane.
  2. Porównaj widoczny tekst, ikonę, dostępną nazwę oraz rolę. Nie ograniczaj oceny do równości tekstów.
  3. Użyj obu funkcji z tymi samymi danymi i zapisz wynik. Handler lub URI nie potwierdzają równoważności działania.
  4. W Pracowni wpisz P-104, użyj Szukaj na Starcie i w Zamówieniach, następnie przejdź przez good → bad → control → good. Reset ma wyczyścić pole i przywrócić Start/good; nieznana trasa otwiera good.
  5. Good zachowuje identyfikację, bad odtwarza F31, a control zwraca odrębne godziny odbioru. Kontekstowych nazw i odrębnych funkcji nie zgłaszaj wyłącznie z powodu różnicy tekstu.

Rzeczywiste wykonanie źródła

Wyniki pochodzą z 2026-10-04. Redakcja 2026-10-12 nie jest ponowną próbą.

Sprawdzenie Wynik i granica
Flutter 3.44.9 / Dart 3.12.2 Analiza i build iOS PASS; 67 istniejących testów hostowych PASS to regresja wcześniejszych demonstracji, nie dowód iOS 3.2.4.
Pierwsza próba iOS FAIL harnessu: 48,042 s XCTest / 67,176 s orkiestracji; zapisano 17 stanów/drzew, 17 wejść i 8 PNG. Ostatnia asercja błędnie oczekiwała placeholdera zamiast pustej wartości.
Końcowa próba iOS PASS: 45,931 s XCTest / 54,067 s orkiestracji, 17 stanów/drzew, 17 wejść i 8 PNG; fallback, cykl, wyniki oraz pusty reset. Aplikacja identyczna; poprawiono marker i asercję drivera.
Zbiór webowy 17 DOM/AX, 16 działań po otwarciu, 32 zdarzenia trusted i 8 JPEG. Wykonano pięć znaków wejścia oraz 15 kliknięć, wspólny wynik, kontrolę różnych funkcji, cykl i reset.
Przygotowanie webowe FAIL odczytu sessionStorage przed pierwszym działaniem; ograniczone evaluate nie udostępniało tego API. Pasywny dataset rejestruje wejścia, bez ustawiania wyniku.
Checker dowodów Kontrola znanej fixture, sekwencji, nazw, wyników, geometrii, hashów i linków; nie ACT, benchmark ani zaślepiona ocena kryterium.
Media AI obejrzała surowe końcowe i historyczne obrazy; bez retuszu lub ilustracji AI. Nie nagrywano filmu/audio i nie badano wypowiedzi czytnika.

Środowisko iOS: Xcode 27.0 (27A266a), SDK symulatora 27.0, iPhone 17 Simulator / iOS 26.5, widok 402×874 pt, PNG 1206×2622 px. Odbiornik webowy: Codex IAB/macOS, 1280×720 CSS px, DPR 1, JPEG 1280×720; wersja silnika nieustalona. Jasny renderer i domyślny tekst, bez pełnego audytu ustawień systemu. Odczyty są sekwencyjne, bez deklaracji atomowego pomiaru.

Weryfikacja i ograniczenia

Deterministyczny checker porównuje zapisane konkretne odczyty, powtarzalność danych, wyniki działań, nazwy, geometrię, logi, hashe i linki. Zna nasze ID/scenariusze i oczekiwania, dlatego jego PASS oznacza spójność dowodów fixture. Nie jest benchmarkiem, ACT ani niezależnym wynikiem merytorycznym całego kryterium.

Drzewo/DOM może wskazać rozbieżność nazwy, lecz nie ustala automatycznie równoważności funkcji, granic zbioru i rozpoznawalności. Screenshot pokazuje widoczną identyfikację, ale nie dostępną nazwę i wynik każdej ścieżki. AX jest przybliżeniem informacji dostępnej dla AT, nie testem rzeczywistej wypowiedzi VoiceOver. Przy dopasowaniu komponentów brać pod uwagę kontekst, rolę, zakres danych, wystąpienia responsive i użytkownika; tłumaczenia, PageN i odrębne funkcje są źródłami fałszywych alarmów equality-checkera. Taki sam label nie dowodzi spójności ikon lub jednakowego wyniku. Brak danych daje niepewność, nie PASS.

Ocena AI obejmuje interpretację, kod i oględziny mediów. Człowiek, zaślepiony walidator i silnik ACT NOT-RUN; brak reguł ACT nie znosi wymagania. Oczekiwane warianty nie mogą być wejściem zaślepionego badania.

Jak sprawdza Clearship

Clearship zbiera w P0 dowody set-evidence-1 dla oceny człowieka: stany o wspólnym tytule, obszary powtarzane, kontrolki z tą samą nazwą i najbliższe pozycją kontrolki nazwane inaczej. Słownik podobnych nazw, np. Szukaj/Znajdź, dodaje wskazówkę; nie ustala równoważności funkcji.

Wynik zawsze wymaga człowieka, wykonanie jest incomplete, znaleziska to kandydaci. Android i iOS mają not-measured, bez progu. Człowiek kwalifikuje rzeczywisty zbiór, instancje, wyniki funkcji i rozpoznawalność. Stany jednego tytułu ani ekrany jednej aplikacji nie potwierdzają zbioru programów.

Strony zmieniane bez zmiany widoku wymagają zapisanych obserwacji akcji actionEvidence. Nie każda kontrolka drugiej strony została użyta w P0. Ikony bez nazw, kontrolki poza powtarzanym obszarem i ta sama nazwa różnych funkcji nie są rozstrzygane; brak danych lub kandydata nie daje wyniku „nie znaleźliśmy problemów”. Edukacyjna demonstracja nie jest pomiarem produktu; wybór ręcznej oceny nie zamawia usługi człowieka.

Powiązane kryteria