Notas de Lançamento do Axe DevTools Mobile de 30 de junho de 2026
30 de junho de 2026
Versões dos Componentes
iOS
- iOS SDK (axeDevToolsXCUI v4.0.1)
Como atualizar: iOS SDK
Android
- Android SDK (axe-devtools-android v9.0.0)
- Android Gradle Plugin (axe-devtools-android-plugin v1.1.0)
- Android Analyzer (axe Accessibility Analyzer v3.0.0)
Como atualizar: Android Gradle Plugin, Android Analyzer
O que há de novo?
Nova Regra para iOS: Texto Cortado
A Deque está comprometida a oferecer e otimizar regras que detectarão com precisão problemas reais de acessibilidade. Nossa mais nova regra para iOS ajuda a garantir que o conteúdo permaneça visível para os usuários, independentemente do tamanho de texto preferido. Saiba mais sobre esta regra: Texto Cortado.
Novas APIs
Você pode usar as seguintes APIs ao realizar testes direcionados tanto no iOS quanto no Android.
- Chamar
generateHtmlReportAndSummaryuma vez por execução de teste produz um relatório HTML autônomo e o salva localmente no seu dispositivo. startScanSessioninicia uma sessão de teste e se conecta ao Axe Developer Hub, onde os resultados serão postados. Observe questartSessionfoi descontinuado em favor destartScanSession.
Caminho de Saída Configurável para Resultados
Agora você pode indicar o axeHtmlReportPath tanto para Auto Scan quanto para Testes Direcionados no Android. Por padrão, os resultados são armazenados em build/reports/AxeDevToolsMobileResults. Ao usar o Auto Scan, os resultados são enviados para este local automaticamente. Ao realizar Testes Direcionados, é aqui que os resultados serão armazenados ao utilizar a API generateHtmlReportAndSummary para construir um relatório manualmente.
De forma semelhante, o iOS Auto Scan agora suporta um diretório de saída configurável pelo usuário para o relatório HTML e o resumo .txt. Anteriormente, o local de saída era codificado para ~/AxeDevToolsMobileResults.
Correções
iOS
- Corrigido um problema com capturas de tela em modo paisagem em dispositivos físicos
- No SwiftUI, varreduras de tela cheia não são mais incorretamente marcadas como parciais
- Desempenho do Auto Scan melhorado
- Melhorias na precisão das regras de Contraste de Cor e Em ScrollView
Atualizações
iOS
- Saída JSON do Auto Scan agora está consolidada sob
AxeDevToolsMobileResults/axe-test-data axeProjectIdagora é obrigatório emaxe_config.jsonpara Auto Scan
Depreciações e Remoções
iOS
- O fluxo de autenticação depreciado
login(withUsername:andPassword:toServer:)foi removido - O
startSession(apiKey: String, projectId: String, serverUrl: String)método para postar resultados no Developer Hub com testes direcionados foi descontinuado, estartScanSession(apiKey: String, projectId: String, axeAccountUrl: String)foi configurado para substituí-lo - A
axeServerUrlpropriedade de configuração para Auto Scan foi descontinuada, eaxeAccountUrlfoi configurada para substituí-la
Android
- O fluxo de autenticação
loginWithUsername(username: String, password: String, serverConfig: String)obsoleto foi removido - O
startSession(apiKey: String, projectId: String, serverUrl: String)método para postar resultados no Developer Hub com testes direcionados foi descontinuado, estartScanSession(apiKey: String, projectId: String, axeAccountUrl: String)foi configurado para substituí-lo - A
axeServerUrlpropriedade de configuração para Auto Scan foi descontinuada, eaxeAccountUrlfoi configurada para substituí-la
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 assim notificá-lo uma vez que o problema seja resolvido ou de uma solução alternativa identificada, caso nenhuma esteja listada.
- O teste automatizado do Axe DevTools Mobile é executado em aplicativos nativos iOS, Android e React Native. Por favor, contate seu representante Deque para soluções de teste de acessibilidade no seu stack tecnológico.
- Embora você possa obter alguns resultados de web views ou PDFs renderizados, recomendamos fortemente o teste usando axe DevTools para Web ou axe Monitor para o teste de acessibilidade mais completo para a web.
iOS
A Contraste de Cor pode ser executada em elementos apenas com ícones devido à OCR
A regra de Contraste de Cor usa o framework Vision da Apple (Reconhecimento Óptico de Caracteres, ou OCR) para ler o texto dentro dos limites de um elemento. O OCR pode ocasionalmente identificar erroneamente pequenos glifos similares a ícones - como setas de retorno (<), marcadores, símbolos decorativos - como texto. Quando isso ocorre, a regra de Contraste de Cor é executada em um elemento que não contém texto legível, o que pode produzir um resultado para um botão apenas com ícone. Como a saída do OCR não é determinística entre scans, o mesmo elemento pode aparecer nos resultados de Contraste de Cor em um scan e ser relatado como "INAPLICÁVEL" no próximo. Esta é uma característica conhecida do OCR, não um bug na regra.
Para contornar este problema, você pode usar as ignore APIs para suprimir os resultados do Contraste de Cor para os elementos afetados.
// Ignore Color Contrast for a specific element by accessibility identifier
axeDevTools?.configuration.ignore(rulesFor: [
"backButton": [AxeRuleId.ColorContrast.toString()]
])// Ou ignore o Contraste de Cor globalmente axeDevTools?.configuration.ignore(rule: AxeRuleId.ColorContrast.toString())
Saiba mais sobre ignorar regras.
Falso positivo de Título da Tela em apps Flutter
O Flutter não mapeia AppBar.title para a propriedade de título de tela nativa - UIViewController.title, fazendo com que a regra de Título da Tela falhe em todas as telas Flutter, independentemente de haver um título descritivo presente.
Esta é uma limitação conhecida da plataforma Flutter acompanhada em flutter/flutter#185894.
Falsos positivos para a regra de Contraste de Cor com fundos em gradiente em telas pequenas
Ao executar verificações de acessibilidade em tamanhos de tela menores ou com tamanhos de fonte menores, a regra de Contraste de Cor pode relatar falsos positivos para fundos em gradiente. Nesses casos, pode não conseguir determinar a cor de primeiro plano e, em vez disso, comparar as cores de fundo entre si, resultando em uma falha.
Para contornar este problema, tente executar verificações de acessibilidade em dispositivos maiores. Alternativamente, você pode optar por ignorar a regra em seus testes e verificar manualmente o Contraste de Cor para essas visualizações.
Propriedade isVisible imprecisa do XCTest
As APIs de acessibilidade da Apple podem relatar incorretamente o conteúdo da web dentro do WKWebView como "isVisible", mesmo quando a web view está coberta por sobreposições nativas (como visualizações modais, alertas ou outros elementos de UI nativos). Isso ocorre porque o sistema de acessibilidade verifica se o contêiner do WKWebView em si está visível, em vez de se o seu conteúdo web é realmente desobstruído e perceptível para o usuário.
Bug de acessibilidade do iOS 26 com steppers
O iOS 26 contém um bug de acessibilidade onde os botões padrão dos steppers não anunciam "atenuado" por Tecnologia Assistiva para indicar que não estão habilitados. Como resultado, as regras do iOS também veem esses botões como habilitados mesmo que não estejam. Um relatório de bug foi feito para a Apple, mas até que isso seja resolvido, as regras seguintes podem relatar resultados em botões de stepper desabilitados: AssociatedText, InaccessibleAction, e ColorContrast.
Até que a Apple resolva esse bug, a solução será [ignorar as regras](ios-ignore-rule). Os botões padrão do stepper têm os identificadores „Decrement“ e „Increment“, e podem ser ignorados por identificador, se necessário.
Color Contrast rule does not run when text and background colors are the same
Our Color Contrast rule depends on Machine Learning to detect text, which ensures that the text being scanned is visible to users of your application. In cases where the text contained in a view is the same color as the background, our Machine Learning algorithm is unable to detect if any text is present, so the Color Contrast rule does not run on this view.
Falso Positivo: LabelInName e LabelAtFront em SwiftUI & Apps Multi-plataforma
Algumas telas podem relatar falsos positivos com LabelInName e LabelAtFront devido a uma propriedade associatedText incorreta encontrada (#1622)
Regra de suporte a tipo dinâmico não funciona com o simulador iOS 15 Pro
Há um problema afetando o simulador do iPhone 15 Pro que impede a execução da regra de suporte a tipo dinâmico. Se você optou pela regra de suporte a tipo dinâmico, não poderá testá-la usando um simulador do iPhone 15 Pro. Um bug foi reportado à Apple.
Regras contra controles aninhados
Enquanto analisávamos uma melhoria para nossas regras, descobrimos que no XCTest, os controles aninhados não são retornados na árvore de acessibilidade. Um bug foi reportado à Apple. (#1110)
Regra de Nome para ImageView precisa de revisão em aplicativos UIKit
Em aplicativos UIKit, uma imagem sem um `accessibilityLabel` não é focável com tecnologia assistiva por padrão.
As propriedades que usamos para verificar focabilidade da Apple podem ser imprecisas quando um `accessibilityIdentifier` é definido na imagem. Devido a este comportamento inesperado, os resultados para problemas de Nome de ImageView em aplicativos UIKit serão relatados como necessários revisão. Um relatório de bug foi enviado à Apple. (#1633)
Falso Positivo: No Scroll View, Label In Name, Label at Front, e v2.11.0 Nome de Image View & Nome do Controle Ativo
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
Texto em elementos que se comportam como banners pode ser marcado com uma mensagem de „Necessita Revisão“. Para tornar esses elementos disponíveis para aqueles que exigem texto maior, use UILargeContentViewer. (#622)
v2.11.0 Image View Name & Active Control Name
Se um UIImageView tiver um `accessibilityIdentifier` definido mas não for focável pelo VoiceOver, e tiver controles focáveis aninhados dentro dele, o Nome do Controle Ativo pode relatar um falso positivo no UIImageView. Remover o `accessibilityIdentifier` resolve o problema. Um bug foi reportado à Apple. (#1633)
Label In Name and Label At Front
Essas duas regras procuram um rótulo visível do controle entre os elementos próximos para ajudar a determinar o status da regra. Em algumas hierarquias de visualização, o texto próximo incorreto pode ser detectado, fazendo com que essas regras falhem. (#1622)
Android
Potenciais preocupações de acessibilidade para Texto Focável
Ao usar texto decorativo em views como „Ícones de Contato“, é possível introduzir um problema de acessibilidade. Se você está usando uma visualização de texto para exibir letras em vez de gerar imagens com as letras desejadas como vetores, e, em seguida, declarar essa visualização de texto como não importante para a acessibilidade, não poderemos dizer de forma confiável se você introduziu uma violação de acessibilidade.
Se você editar texto focável para ignorar dois ou menos caracteres, poderá, inadvertidamente, ignorar muitos botões de uma palavra em vários idiomas (por exemplo, „OK“, „Não“, „Sí“). Para evitar esses problemas, você deve pegar as letras desejadas da palavra que deseja representar no ícone e gerar as letras como parte da imagem, em vez de visualizações de texto separadas. `FocusableText` então não será executado nessas visualizações.
Falso positivo do Título de Tela em aplicativos Flutter
O Flutter não mapeia AppBar.title para a propriedade de título nativo da tela - Activity.setTitle, fazendo com que a regra de Título de Tela falhe em todas as telas Flutter, independentemente de um título descritivo estar presente.
Esta é uma limitação conhecida da plataforma Flutter rastreada em flutter/flutter#185894.
Detecção de falso positivo de texto anunciado
Em alguns casos, a tecnologia assistiva depende de AccessibilityEvent descrições do sistema Android para anunciar informações ao usuário quando nenhum outro anúncio está disponível. Desde que AccessibilityEvents são acionados por ações do usuário, não podemos acessar a descrição correta se essa informação não for fornecida.
Para evitar esse problema, certifique-se de que todas as visualizações relevantes estejam marcadas como importantes para acessibilidade. Isso permitirá que o Talkback acesse as informações da vista, que nossa ferramenta poderá então detectar.
A regra de contraste de cor não é executada quando as cores do texto e do fundo são as mesmas
Nossa regra de contraste de cor depende do aprendizado de máquina para detectar texto, o que garante que o texto escaneado seja visível para os usuários do seu aplicativo. Em casos onde o texto contido em uma vista tem a mesma cor que o fundo, nosso algoritmo de aprendizado de máquina não consegue detectar se há texto presente, portanto, a regra de contraste de cor não é executada nessa vista.
EditTextName no Android 7 (SDK 24-25)
Apps escritos com XML que utilizam o recurso de texto de dica podem ver falsos positivos com a EditTextName regra. O texto de dica não foi introduzido até o Android 8 (SDK 26). Usar este elemento em seu aplicativo XML atribuirá o texto de dica ao valor do campo de entrada de texto. Versões mais recentes do Android estão melhor equipadas para tornar essa experiência acessível.
Para superar esse problema, nossa primeira recomendação é executar seus testes em versões mais novas do Android. Se for importante que o aplicativo seja acessível em versões anteriores do Android, no entanto, pode considerar evitar o uso do hintText recurso, já que não é oficialmente suportado.
Visualizações ocultas do Android retornando resultados
Você pode ver resultados para visualizações que estão ocultas atrás de outras visualizações na tela. Essas visualizações ocultas não estão disponíveis para tecnologia assistiva, mas o axe DevTools Mobile ainda as relata como problemas.
Estamos trabalhando em uma solução para esse problema complexo. Enquanto isso, se o TalkBack não conseguir alcançar essas visualizações, você pode desconsiderar os problemas correspondentes. Eles não necessitam de uma correção para garantir acessibilidade.
Erro ao executar a detecção de texto do ML Kit
A detecção de texto do ML Kit é necessária em muitas das regras do axe DevTools Mobile para garantir a precisão dos resultados. A biblioteca ML Kit deve ser importada automaticamente ao referenciar o axe DevTools Mobile em seus testes automatizados de Espresso ou UIAutomator. No entanto, em alguns casos, a importação automática não ocorre e você verá o seguinte erro no logcat:
Axe DevTools Android: Error while running mlKit Text Detection: MlKitContext has not been initialized.
Para resolver esse problema, você deve importar manualmente a biblioteca ML Kit no seu projeto. No build.gradle arquivo do seu aplicativo, adicione o seguinte em dependências:
debugImplementation 'com.google.mlkit:text-recognition:16.0.1'
Find a full working example of the ML Kit library being imported in the Android Mobile SDK Getting Started section, under Implementação
Espaçamento de Alvo de Toque e Jetpack Compose
A regra de Espaçamento de Alvo de Toque atualmente não está em execução em nenhum componente deslizante criado no Jetpack Compose. Nenhuma ação pode ser tomada no momento. No entanto, uma correção está chegando em breve!
Erro ao salvar resultados localmente no API 30
No Android API 30, um dos locais onde tentamos salvar resultados localmente apresenta um erro de permissões. O resultado ainda será salvo como um arquivo JSON, apesar de esse erro ser exibido. O erro pode ser suprimido comentando o código no bloco a seguir:
def clearDirectoryTask = task('clearDirectoryTask', type: Exec, group: 'reporting') {
executable "${android.getAdbExecutable().toString()}"
args 'shell', 'rm', '-r', '/storage/emulated/0/Documents/AxeTestCases'// finalizedBy {
// fetchAndroidFolderAxeReportsTask
// }
}
Observe que este código deve ser comentado apenas para o API 30, pois causará problemas ao salvar localmente para outros níveis de API.
Detecção de rolagem em Aplicativos Híbridos e Multiplataforma
Em alguns aplicativos híbridos e multiplataforma, podemos obter resultados inesperados quando itens em uma visualização de rolagem estão parcialmente fora da tela. Para testar a acessibilidade de um elemento, certifique-se de que ele esteja totalmente visível na tela antes de realizar a varredura.
App Analyzer: Botão de Ação Flutuante Desaparece
Introduzida com o API 31 (Android 12) está a capacidade de ocultar sobreposições que não são do sistema. Para utilizar o aplicativo axe Analyzer, certifique-se de que esta configuração não esteja ativada. Se você optou por utilizar esse recurso para seus aprimoramentos de segurança, recomendamos deixá-lo desativado para versões internas de teste, onde você pode usar com segurança os dados de teste e eliminar preocupações de segurança dessa forma. Note: this setting does not affect Google's accessibility scanner app as it's considered a system overlay.
Para utilizar o aplicativo axe Accessibility Analyzer, atualize todas as chamadas para o método setHideOverlayWindows(true) para setHideOverlayWindows(false) nas janelas das atividades afetadas.
Captura de Tela Ausente (Caixa Preta) no Dashboard
Para desbloquear a funcionalidade completa do axe DevTools para Mobile, certifique-se de que as capturas de tela estejam ativadas. Recomendamos ativar as capturas de tela em uma versão de depuração ou teste do seu aplicativo que use dados simulados para evitar preocupações de segurança. Confira nosso guia para ativar capturas de tela em aplicativos Android.
Falha ao minifiedEnabled está definido como verdadeiro
Se estiver minimizando sua compilação, você verá uma falha com um log 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 compilações de depuração com o axe DevTools implementado. (#729)
Compilações com r8 ativado geram um erro
Uma compilação com r8 ativado pode tentar minimizar a biblioteca axeDevTools resultando em um erro similar 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.** { *; }
Mensagens de Erro ao Usar APIs Compose
As APIs Compose estão obsoletas, por favor, use as APIs agnósticas de layout para continuar recebendo atualizações. Se você continuar a usar as APIs Compose e encontrar um erro como `Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)` ou `No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?`, consulte API setTestTag Compose.
MAUI: Regra de Nome do Edit Text
Devido a limitações da arquitetura do aplicativo MAUI ao renderizar no ecossistema Android, a regra de Nome do Edit Text aparecerá como Necessita de Revisão no painel quando uma falha for suspeita para a versão do SDK 5.5.0 e superior. Por favor, confirme o comportamento correto manualmente para esse caso.
Android Nativo: Diálogos/Modais Customizados
Quando você estiver implementando diálogos ou modais personalizados que não estendem os controles nativos, poderá obter resultados para visualizações por trás do modal. Nesse caso, recomendamos não executar nossa ferramenta contra esses modais ou diálogos personalizados e, em vez disso, verificá-los manualmente para garantir que se comportem com tecnologia assistiva conforme desejado.
Painel da Web
Captura de Tela Ausente
Se a captura de tela estiver ausente na página de detalhes da varredura, seu aplicativo pode estar impedindo que capturas de tela sejam feitas. Muitas vezes, isso ocorre por razões de segurança em seu aplicativo de produção. Considere remover esse requisito para sua versão de teste para permitir a funcionalidade completa no Dashboard Mobile do axe DevTools.
Alguns nomes de varredura do Android estão sem formatação
Alguns nomes de varredura do Android que são padronizados para o título da tela aparecerão como o nome completo da classe, incluindo o identificador do pacote. Em uma versão futura, isso será resolvido para que o título da tela seja formatado em um nome mais legível. Como solução alternativa, você pode definir o nome da varredura a partir do painel ou das estruturas. (#1643)
