Notas de Lançamento do axe DevTools Mobile de 18 de outubro de 2023
18 de outubro de 2023
Versões dos Componentes
- axeDevToolsXCUI v2.8.0
- axe-devtools-android v4.2.0
O Que Há de Novo?
Suporte para WCAG 2.2
O WCAG 2.2 foi oficialmente lançado em 5 de outubro. Nossa regra de "Espaçamento da Área de Toque" foi promovida de status Experimental. Esta regra está em conformidade com o WCAG 2.2. 2.5.8 e garante que os alvos tenham um tamanho mínimo ou espaçamento suficiente ao redor. Isso é importante para pessoas com deficiências físicas que não conseguem clicar em botões pequenos muito próximos uns dos outros. Saiba mais sobre o lançamento do WCAG 2.2.. Veja a documentação sobre a regra de Espaçamento da Área de Toque para iOS e a regra de Espaçamento da Área de Toque para Android.
Você sabia? A regra de Espaçamento da Área de Toque (WCAG 2.2, 2.5.8) atende aos padrões AA, enquanto a regra de Tamanho da Área de Toque (WCAG 2.1, 2.5.5) atende aos padrões AAA. Para controles importantes, o WCAG recomenda buscar a regra mais rígida, de Tamanho da Área de Toque, para atender aos padrões AAA. A Deque também recomenda buscar a regra mais rígida em dispositivos móveis, pois ela impõe conformidade com a diretriz de 44ptx44pt da Apple e se alinha mais de perto com a diretriz de 48dpx48dp do Google, assegurando que não haverá problemas ao enviar seu aplicativo para as lojas de aplicativos.
Mudança Importante - Escanear Apenas Vistas Visíveis
Agora, o axe DevTools Mobile escaneará apenas as vistas que estão visíveis para o usuário no momento do escaneamento. Anteriormente, o padrão era escanear todas as vistas, mesmo aquelas que estavam fora da tela ou ocultas por outras vistas.
Como isso melhora os resultados?
- Ao escanear apenas o que é visível para o usuário, os resultados refletem mais precisamente a experiência do usuário com deficiência ou que utiliza tecnologia assistiva. Qualquer coisa atrás de um diálogo ou modal que não possa ser alcançada pelo usuário ou por tecnologia assistiva não será escaneada.
- Regras de visão computacional, como contraste de cores, não são executadas em vistas que estão fora da tela, portanto, anteriormente, vistas fora da tela recebiam resultados apenas de um conjunto limitado de regras. Ao escanear apenas vistas dentro dos limites da tela, você pode ter certeza de que quaisquer vistas escaneadas estão se beneficiando do conjunto completo de regras.
O que isso significa para sua equipe?
Se atualmente você tem as caixas para "Filtragem de Problemas" no Painel desmarcadas, você não notará nenhuma diferença nos resultados do seu Painel. Vistas que não são visíveis para o usuário já estão excluídas dos seus resultados.
Caso contrário, uma vez que você atualize para axeDevToolsXCUI v2.8.0 e axe-devtools-android v4.2.0:
- Vistas que estão escondidas atrás de outras vistas, como modais ou pop-ups, não terão resultados de acessibilidade.
- Vistas que estão fora da tela, como aquelas acima ou abaixo da posição atual da rolagem, não terão resultados de acessibilidade.
- Dica: Faça um escaneamento em cada posição de rolagem de uma tela longa para garantir que você capture todos os problemas de acessibilidade. Por exemplo, se a tela inicial do seu aplicativo abranger 3 telas, você faria 3 escaneamentos, como mostrado abaixo:

- Para telas longas com um tipo de vista repetido, como uma lista, múltiplos escaneamentos em cada posição de rolagem podem não ser necessários. Um único escaneamento da primeira área visualizável provavelmente capturará os problemas recorrentes de acessibilidade.
- Dica: Faça um escaneamento em cada posição de rolagem de uma tela longa para garantir que você capture todos os problemas de acessibilidade. Por exemplo, se a tela inicial do seu aplicativo abranger 3 telas, você faria 3 escaneamentos, como mostrado abaixo:
iOS
- A regra de Texto Associado foi promovida de status experimental. Esta regra assegura que um controle obtenha seu nome acessível de um rótulo próximo disponível para tecnologias assistivas, como VoiceOver e Controle por Voz.
- A regra de Contraste de Cor recebeu uma melhoria para captar um tamanho de fonte estimado e melhorar ainda mais a precisão dos resultados. Esta mudança significa que os resultados, em alguns cenários, agora vão relatar status de 'Aprovado' ou 'Reprovado' em vez de 'Necessita Revisão'.
Android
- Mudança Significativa nas Regras Personalizadas - A interface para executar regras personalizadas no Android recebeu uma atualização para retornar um
RunRuleResultobjeto em vez de umStringtipo. Veja um exemplo completo da mudança ou mais informações sobre regras personalizadas no Android. - Após uma análise cuidadosa, decidimos remover as Regras de Vista Ocultas experimentais da nossa biblioteca - Foco de Vista Ativo Oculto e Foco de Vista Informativa Oculta. Essas regras experimentais passaram por muitas iterações à medida que coletamos feedback ao longo de dois anos. Descobrimos que automatizar essas regras tem o potencial de retornar falsos positivos, e, portanto, decidimos removê-las do nosso conjunto de regras automatizadas para apoiar nosso compromisso com 0 falsos positivos. Com este lançamento, movemos as Regras de Vista Ocultas para o status "ignorado". Elas não aparecerão mais em sua contagem de resultados "falhados" ou "passados". Em nosso próximo lançamento (data a ser determinada), elas serão completamente removidas da biblioteca.
- Adicionamos resumos mais descritivos às regras para descrever melhor por que elas são marcadas como Aprovadas, Reprovadas ou Necessitam Revisão.
- As APIs de Compose agora aceitam
ComposeEmptyTestRulepara iniciar uma atividade usandoActivityScenario. Isso pode ser mais fácil do que usarAndroidComposeTestRule, especialmente ao usar as visualizações XML e Compose juntas. Saiba mais sobre o uso da Regra de Teste Vazio no Compose. - Com esta versão, atualizamos da versão 1.7 do Kotlin para o Kotlin 1.9 para garantir que nossas bibliotecas permaneçam compatíveis com as versões mais recentes do Jetpack Compose. A versão 1.9 do Kotlin é compatível com versões anteriores a partir do Kotlin 1.8. Se o seu aplicativo depender de uma versão do Kotlin inferior a 1.8, continue a usar o axe-devtools-android v4.1.0 ou inferior.
- Atualizamos do Moshi 1.12.0 para 1.15.0 e do Jetpack Compose 1.4.3 para 1.5.1.
Correções de Bugs
iOS
- O Tough Target Spacing recebeu algumas atualizações para lidar com casos extremos de controles ocultos e elementos completamente sobrepostos.
- Melhorias na detecção de elementos de acessibilidade em casos extremos, o que melhorará a precisão dos resultados para várias regras de teste de controles.
- A regra Supporta Dynamic Type não será executada em controles sem texto visível.
- O framework não congela mais em elementos Picker. Nenhuma mudança nos resultados é esperada, pois não há regras atuais direcionadas a elementos Picker. Procuraremos oportunidades no futuro.
Android
- Adicionamos propriedades de orientação de tela legíveis por humanos aos valores analisados para a regra de Orientação de Tela. Anteriormente, estes eram valores inteiros que não podiam ser facilmente entendidos pela pessoa que revisava os resultados.
- Agora você pode atualizar a lista de regras personalizadas ao usar a varredura agnóstica de layout através do Registry de Instrumentação.
Painel
- Melhorias de acessibilidade na visualização em árvore na funcionalidade "Inspeção". Agora você pode navegar com sucesso pela visualização em árvore usando um teclado ou tecnologia assistiva.
Problemas Conhecidos
Se você estiver enfrentando algum dos problemas abaixo, por favor, entre em contato conosco em helpdesk@deque.com ou support.deque.com. Poderemos, então, notificá-lo assim que for resolvido ou sobre uma solução alternativa identificada, caso nenhuma esteja listada.
- O teste automatizado do axe DevTools Mobile é executado em aplicativos nativos iOS, nativos Android e React Native. Entre em contato com seu representante Deque para soluções de teste de acessibilidade no seu stack tecnológico.
- Enquanto você pode obter alguns resultados de visualizações web ou PDFs renderizados, recomendamos fortemente testar usando o axe DevTools para Web ou axe Monitor para um teste de acessibilidade mais abrangente para a web.
axe DevTools Mobile para iOS
A regra Supporta Dynamic Type não funciona com o simulador iOS 15 Pro
Há um problema que afeta o simulador do iPhone 15 Pro que impede a execução da regra Supporta Dynamic Type. Se você aderiu à regra Supporta Dynamic Type, não poderá testá-la usando o simulador do iPhone 15 Pro. Um bug foi registrado com a Apple.
Regras contra Controles Aninhados
Ao analisar uma melhoria para nossas regras, descobrimos que no XCTest, os controles aninhados não são retornados na árvore de acessibilidade. Um bug foi registrado com a Apple. (#1110)
Falso Positivo: Em Scroll View, ActiveControlName
Estamos trabalhando ativamente em correções para os seguintes falsos positivos e atualizaremos esta lista à medida que as correções forem lançadas.
In Scroll View
Pode relatar problemas para texto dentro de elementos comportando-se como banner. Para tornar esses elementos disponíveis para aqueles que necessitam de texto maior, use UILargeContentViewer. (#622)
ActiveControlName
Se um UIImageView tiver um `accessibilityIdentifier` definido mas não for focável pelo VoiceOver, e tiver controles focáveis aninhados dentro dele, o ActiveControlName pode relatar um falso positivo no UIImageView. Remover o `accessibilityIdentifier` resolve o problema. Um bug foi registrado com a Apple. (#1226)
Falso Negativo: Nome da Imagem, Texto Focável no iOS 13 até iOS 14.8.1
Estamos trabalhando ativamente em correções para os seguintes falsos negativos e atualizaremos esta lista à medida que as correções forem lançadas.
Image View Name
Se um UIImageView tiver um `accessibilityIdentifier` definido mas não for focável pelo VoiceOver, o ImageViewName pode relatar um falso negativo no UIImageView. Remover o `accessibilityIdentifier` resolve o problema. Um bug foi registrado com a Apple. (#1226)
Focusable Text
Elementos marcados como não acessíveis podem relatar resultados inadequados devido a um bug no framework da Apple.
axe DevTools Mobile para Android
Falha ao usar Proguard
Se a sua build de depuração ou teste estiver utilizando o Proguard, siga os passos para ignorar a Deque nas suas configurações do Proguard.
Falha quando `minifiedEnabled` está definido como verdadeiro
Se estiver minimizando sua compilação, você verá uma falha com um registro de erro relatando que um adaptador não pôde ser encontrado ao tentar fazer login na biblioteca do axe DevTools. Desative a minimização para suas builds de depuração com o axe DevTools implementado. (#729)
Erros ao Compilar com Projeto Java8 e axe DevTools Android 3.1.0
Tente as seguintes importações:
implementation 'androidx.core:core-ktx:1.9.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'After importing the above library, if you see errors related to minSDK version for core-ktx library try the following in your project’s Android Manifest:
<uses-sdk tools:overrideLibrary="androidx.core" />
Builds com r8 habilitado geram um erro
Uma build com o r8 habilitado pode tentar minimizar a biblioteca axeDevTools, resultando em um erro semelhante a:
Caused by: java.lang.NullPointerException: throw with null exception at g.b.b.a$a.a(Unknown Source:1) at g.b.b.a$a.a(Unknown Source:0) at g.b.b.a.a(AccessToken.java:190)To resolve this error add the following line to your ProGuard file to keep axeDevTools classes:
keep class com.deque.** { *; }
Mensagem de erro semelhante a:
Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)
Se você encontrar um erro semelhante a `Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)`, por favor, entre em contato conosco em helpdesk@deque.com ou support.deque.com para assistência. Em certas condições, pode haver dois nós raíz do Compose existentes ao mesmo tempo.
Painel de Controle axe DevTools Mobile
Alguns nomes de escaneamento Android estão sem formatação
Alguns nomes de escaneamento Android que são atribuídos automaticamente ao título da tela aparecerão como o nome completo da classe incluindo o identificador do pacote. Em uma futura atualização, isso será resolvido para que o título da tela seja formatado em um nome mais legível. Como alternativa, você pode definir o nome do escaneamento no painel de controle ou nos frameworks. (#1643)
