Notas de Lançamento do Axe DevTools Mobile - 23 de outubro de 2026
23 de outubro de 2026
Versões de Componentes
iOS
- iOS Appium 3 Driver (axe-appium3-xcuitest-driver v1.7.2)
- (Derivado da XCUITest v12.18.0)
Como atualizar: Driver Appium iOS
Android
- Android Appium 3 Driver (axe-appium3-uiautomator2-driver v1.7.2)
- (Derivado da UiAutomator2 v8.7.0)
Como atualizar: Driver Appium Android
Maestro
- Axe DevTools Mobile para Maestro (axe-devtools-mobile-maestro v1.3.0)
- (Derivado do Maestro v2.11.0)
Correções
Drivers Appium 3
iOS
- Comportamento corrigido de
mobile: axeScanquando o WebDriverAgent runner é construído com Xcode anterior a 16.4. Antes, a primeira varredura fazia o WebDriverAgent falhar com "socket hang up", e todas as varreduras seguintes falhavam comECONNREFUSED.
Android
- Os resultados agora são carregados no Axe Developer Hub com
mobile: axeStartAutoScanSession; este é o padrão quandoaxeUploadResultsnão é definido. Antes, se não fosse definido, nada era carregado, e o status da varredura mostraria "esperando por dados" no Axe Developer Hub.
Nota: Para manter os resultados locais, definaaxeUploadResults: false. Isso corresponde a comomobile: axeStartSessionjá se comporta.
Atualizações
O projeto Appium foi movido para o Appium 3, e seus drivers oficiais agora têm como alvo o Appium 3. Para permanecer em uma base suportada e segura, o Axe DevTools para Mobile está se movendo apenas para o Appium 3. A partir deste lançamento, não estamos mais publicando novos drivers Appium 2.
Drivers Appium 3
iOS
- Fizemos várias atualizações de segurança de dependências (
sharp,axios,morgan,proxy-addr,qs,@xmldom/xmldom,brace-expansion,@appium/support). - Sessões de simulador em Macs Intel não são mais suportadas a partir deste lançamento. A upstream moveu o controle do simulador para
@appium/coresim, um add-on nativo que só é disponibilizado em build para Apple Silicon. Dispositivos reais ainda funcionam com Intel.
Android
- Fizemos atualizações de segurança de dependências (
sharp,proxy-addr,morgan).
Maestro
- Fizemos atualizações de segurança de dependências (
jackson,protobuf,grpc,netty,micrometer,commons-compress).
Descontinuações e Remoções
Drivers Appium 2
- Nós não publicamos mais novas versões de
axe-appium2-xcuitest-driverouaxe-appium2-uiautomator2-driver. As versões já lançadas continuam funcionando, mas não receberão atualizações ou correções.
Mude paraaxe-appium3-xcuitest-drivere/ouaxe-appium3-uiautomator2-driverpara obter a melhor cobertura de testes. Você pode visitar Obtenha os Drivers Appium do Axe DevTools Mobile para detalhes sobre a configuração.
Problemas Conhecidos
Se você estiver enfrentando algum dos problemas abaixo, entre em contato conosco em helpdesk@deque.com ou support.deque.com. Assim, poderemos notificá-lo assim que ele for resolvido ou sobre uma solução alternativa identificada, caso nenhuma esteja listada.
- O teste automatizado do Axe DevTools Mobile é executado em aplicações nativas iOS, nativas Android e React Native. Entre em contato com seu representante Deque para soluções de teste de acessibilidade em seu stack tecnológico.
- Embora você possa obter alguns resultados de visualizações web ou PDFs renderizados, recomendamos fortemente o uso do Axe DevTools for Web ou Axe Monitor para o teste de acessibilidade mais abrangente para a web.
iOS
Configurações de tempo limite recomendadas para axeScan em telas pesadas
Ao escanear uma tela com hierarquias de visualização grandes ou complexas, o axeScan comando pode levar mais de 60 segundos para ser concluído. O proxy WebDriverAgent (WDA) do Appium aplica um tempo limite padrão de 60 segundos a comandos desconhecidos, e axeScan se enquadra nessa categoria. Se a varredura não for concluída nesse tempo, o WDA cancela a solicitação e o teste lança um erro de tempo limite
Para substituir o tempo limite por comando para comandos proxys do WDA, como axeScan, recomendamos as seguintes configurações em suas capacidades Appium:
appium:commandTimeouts: 240000(4 minutos)appium:wdaConnectionTimeout: 30000(5 minutos)
Note: appium:newCommandTimeout is a different setting. It controls how long Appium waits between commands from the test script. That is not the cause of this issue. The relevant setting is appium:commandTimeouts
Falha no lançamento do simulador do Desktop Analyzer
Se você estiver no Xcode 27 e executando um aplicativo Mobile Analyzer Desktop mais antigo que 2.0.0, o aplicativo não pode abrir o simulador iOS. Ele falha ao tentar lançar /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app Você não pode iniciar uma varredura baseada em simulador até que isso seja resolvido.
Para executar varreduras usando um simulador no Xcode 27, atualize o Desktop Analyzer para a versão 2.0.0+. Com esta atualização, observe que os resultados da acessibilidade agora estão disponíveis em Axe Developer Hub.
A Indeterminismo do OCR do Vision no iPad afeta regras baseadas no Vision
O Axe DevTools SDK usa o framework Vision da Apple para ler texto na tela para várias regras de acessibilidade (por exemplo, Contraste de Cor, Visualizações Colidindo, qualquer regra que dependa de texto detectado pelo Vision).
O Vision nem sempre retorna o mesmo texto detectado entre execuções da mesma tela. Quando o Vision não detecta o texto de um controle, as regras que dependem desse texto não serão aplicadas a esse elemento durante a varredura. Os resultados podem aparecer inconsistentes entre duas varreduras da mesma tela - um problema que falha em uma varredura pode estar ausente na próxima.
Quando uma regra baseada no Vision relata uma falha, a falha em si é precisa. A inconsistência está em se a regra é executada ou não. Para superar este problema, tente o seguinte:
- Refaça a varredura. Se uma regra baseada no Vision foi ignorada para um controle, outra varredura da mesma tela frequentemente a detecta.
- Considere qualquer falha de regra baseada no Vision como válida - se o Contraste de Cor sinaliza um controle, o problema de contraste é real e deve ser corrigido.
- Para verificação manual, use a referência Deque University para o critério de sucesso WCAG relevante. (Links podem ser encontrados no final de cada página de regras.)
Resultados incompletos para regra Suporta Tipo Dinâmico em telas com sinais de percentagem no texto
No iOS 26 e posterior, se uma tela contém texto com um sinal de percentagem (por exemplo, uma etiqueta de texto com "50% de desconto"), a regra Suporta Tipo Dinâmico pode reportar como Incompleta em vez de aprovada ou falha. Esta regra depende de uma auditoria de acessibilidade fornecida pela Apple, e essa auditoria interrompe a execução do teste quando encontra sinais de percentagem. Para manter seus testes em execução, nossa regra ignora a verificação para essa tela e reporta como incompleta para cada elemento que contém um sinal de percentagem. Todas as outras regras funcionam normalmente na tela e outras telas não são afetadas.
Não é necessária nenhuma ação, pois sua varredura será concluída. Para verificar o suporte ao Tipo Dinâmico para essas telas, aumente o tamanho do texto no seu dispositivo em **Configurações** > **Acessibilidade** > **Tamanho do Texto e Exibição** > **Texto Grande**, e confirme se o texto na tela ajusta-se adequadamente. Este problema foi reportado à Apple. (#2985)
Contraste de Cor pode ser aplicado a elementos apenas com ícones devido ao 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 confundir pequenos glifos semelhantes a ícones - como setas (〈), balas, símbolos decorativos - como texto. Quando isso acontece, a regra de Contraste de Cor é aplicada a 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 varreduras, o mesmo elemento pode aparecer nos resultados de Contraste de Cor em uma varredura e ser reportado como "NÃO APLICÁVEL" na próxima. 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 de 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()]
])
// Or ignore Color Contrast globally
axeDevTools?.configuration.ignore(rule: AxeRuleId.ColorContrast.toString())Saiba mais sobre ignorar regras.
Falso positivo de Título da Tela em aplicativos Flutter
O Flutter não mapeia AppBar.title para a propriedade nativa de título da tela - UIViewController.title, fazendo com que a regra de Título da 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.
Falsos positivos para regra de Contraste de Cor com fundos gradientes em telas pequenas
Ao executar verificações de acessibilidade em telas menores ou com tamanhos de fonte menores, a regra de Contraste de Cor pode reportar falsos positivos para fundos gradientes. Nesses casos, pode não ser capaz de 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.
Inaccurate isVisible property from XCTest
As APIs de acessibilidade da Apple podem relatar incorretamente o conteúdo web dentro do WKWebView como "isVisible", mesmo quando a web view está coberta por sobreposições nativas (como visões modais, alertas ou outros elementos de UI nativos). Isso ocorre porque o sistema de acessibilidade verifica se o contêiner WKWebView em si é visível, em vez de verificar se seu conteúdo web está 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 botões default de stepper não anunciam "atenuado" pela 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 enviado para a Apple, mas até que isso seja resolvido, as seguintes regras podem relatar resultados em botões de stepper desativados: AssociatedText, InaccessibleAction, e ColorContrast.
Até que a Apple corrija este bug, a solução será [ignorar as regras](ios-ignore-rule). Os botões default de 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 aplicativos SwiftUI & Cross Platform
Algumas telas podem apresentar falsos positivos com LabelInName e LabelAtFront devido a um associatedText property encontrado incorretamente (#1622)
Regras contra Controles Aninhados
Ao revisar uma melhoria para nossas regras, descobrimos que no XCTest, controles aninhados não são retornados na árvore de acessibilidade. Um bug foi registrado com a Apple. (#1110)
Regra de Nome de ImageView Precisa de Resultados de Revisão para 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 a focabilidade da Apple podem ser imprecisas quando um `accessibilityIdentifier` é definido na imagem. Devido a esse comportamento inesperado, os resultados para problemas de Nome de ImageView em aplicativos UIKit serão reportados como Precisam de Revisão. Um relatório de bug foi enviado para a Apple. (#1633)
Falso Positivo: Em Scroll View, Label In Name, Label at Front, e v2.11.0 Nome de Vista de Imagem & Nome de Controle Ativo
Estamos trabalhando ativamente em correções para os seguintes falsos positivos e atualizaremos esta lista conforme as correções forem lançadas.
In Scroll View
Textos dentro de elementos que funcionam como banners, cabeçalhos/rodapés fixos, botões de ação flutuantes e visualizações de abas personalizadas podem ser sinalizados com uma mensagem de "Precisa de Revisão" ou "Falha". Para tornar esses elementos disponíveis para aqueles que precisam de texto maior, use UILargeContentViewer. (#622, #2077)
v2.11.0 Image View Name & Active Control Name
Se um UIImageView tem um accessibilityIdentifier definido, mas não é focalizável pelo VoiceOver, e possui controles focalizáveis aninhados, o Active Control Name pode relatar um falso positivo no UIImageView. Remover o accessibilityIdentifier resolve o problema. Um bug foi registrado com a Apple. (#1633)
Label In Name and Label At Front
Estas duas regras procuram pelo rótulo visível de um controle entre elementos próximos para ajudar a determinar o status da regra. Em algumas hierarquias de visualização, o texto incorreto pode ser detectado, causando falhas nessas regras. (#1622)
Android
Versões mais antigas do Talkback incompatíveis com o Analyzer FAB
O Botão de Ação Flutuante (FAB) do Android Accessibility Analyzer não é compatível com a navegação por deslizar do Talkback em versões anteriores à 16.2. Com o lançamento da versão 16.2, o Talkback corrigiu um bug em seu código para permitir o foco por deslize para os FABs de sobreposição.
Observe que este é puramente um bug do Talkback, que não permitia que os FABs renderizados em sobreposições de acessibilidade ganhassem ou perdessem foco via deslize. A recente atualização do nosso aplicativo Accessibility Analyzer permite escanear mais tipos de aplicativos; por isso, você pode estar enxergando esse problema agora.
Este problema pode ser resolvido atualizando o Talkback para a versão 16.2 ou posterior.
Falsos positivos do Label at Front com texto visível obscurecido
A regra Label at Front verifica se o rótulo visível de um elemento está no início de seu texto anunciado. Uma falha na regra pode ocorrer quando o texto visível de um elemento interativo contém uma abreviação (por exemplo, "GB", "km") ou um identificador obscurecido/truncado, e o anúncio de acessibilidade consiste nas palavras representadas (por exemplo, "gigabytes", "quilômetros"), mesmo que esse seja o padrão recomendado para tornar conteúdo abreviado ou truncado mais acessível ao leitor de tela.
Se a primeira parte do rótulo visível de um elemento interativo corresponder ao início do anúncio do leitor de tela e apenas a parte abreviada/obscurecida for diferente, o resultado sinalizado pode ser ignorado com segurança. Verifique com um leitor de tela se o anúncio completo é lido conforme o esperado.
Possíveis preocupações de acessibilidade para Texto Focalizável
Ao usar texto decorativo em visualizações como "Ícones de Contato", é possível introduzir um problema de acessibilidade. Se você estiver usando uma visualização de texto para exibir letras em vez de gerar imagens com as letras desejadas como vetores, e então declarar essa visualização de texto como não importante para acessibilidade, não seremos capazes de determinar de forma confiável se você introduziu uma violação de acessibilidade.
Se você editar texto focalizável para ignorar dois ou menos caracteres, pode acabar ignorando muitos botões de uma palavra em vários idiomas (por exemplo, "OK", "No", "Sí"). Para evitar esses problemas, você deve obter as letras desejadas da palavra que deseja representar no ícone e gerar essas letras como parte da imagem, e não como visualizações de texto separadas. O `FocusableText` então não será executado nessas visualizações.
Falso positivo de Título da Tela em aplicativos Flutter
O Flutter não mapeia AppBar.title para a propriedade nativa de título da tela - Activity.setTitle, fazendo com que a regra de Título da 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.
Falso positivo na detecção 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. Já 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 visualização, que nossa ferramenta então poderá detectar.
Regra de Contraste de Cor não é executada quando cores de texto e fundo são iguais
Nossa regra de Contraste de Cor depende de Aprendizado de Máquina para detectar texto, o que garante que o texto a ser analisado seja visível para os usuários do seu aplicativo. Em casos onde o texto contido em uma visualização é da mesma cor que o fundo, nosso algoritmo de Aprendizado de Máquina não consegue detectar se há algum texto presente, por isso a regra de Contraste de Cor não é executada nessa visualização.
EditTextName no Android 7 (SDK 24-25)
Aplicativos escritos em 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 esse elemento no 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 recentes do Android. Se for importante que o aplicativo seja acessível em versões anteriores do Android, no entanto, você pode considerar evitar o uso do hintText recurso, já que ele 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 a 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 puder acessar essas visualizações, você pode desconsiderar os problemas correspondentes. Eles não exigem 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 automaticamente importada ao referenciar o Axe DevTools Mobile em seus testes automatizados Espresso ou UIAutomator. Em alguns casos, no entanto, a importação automática não acontece e você verá o seguinte erro no logcat:
Axe DevTools Android: Erro ao executar a Detecção de Texto do mlKit: MlKitContext não foi inicializado.
Para resolver este problema, você deve importar manualmente a biblioteca ML Kit em seu projeto. No build.gradle do seu aplicativo, adicione o seguinte em dependências:
debugImplementation 'com.google.mlkit:text-recognition:16.0.1'Encontre um exemplo completo de como a biblioteca ML Kit é importada na seção Getting Started do Android Mobile SDK, em Implementação
Espaçamento do Alvo de Toque e Jetpack Compose
A regra de Espaçamento do Alvo de Toque atualmente não é aplicada em nenhum componente de controle deslizante escrito em Jetpack Compose. Nenhuma ação pode ser tomada no momento. No entanto, uma correção está a caminho!
Erro ao salvar resultados localmente na API 30
No Android API 30, um dos locais em que 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 seguinte bloco:
def clearDirectoryTask = task('clearDirectoryTask', type: Exec, group: 'reporting') {
executable "${android.getAdbExecutable().toString()}"
args 'shell', 'rm', '-r', '/storage/emulated/0/Documents/AxeTestCases'
// finalizedBy {
// fetchAndroidFolderAxeReportsTask
// }
}Por favor, observe que este código deve ser comentado apenas para a API 30, pois causará problemas ao salvar localmente para outros níveis de API.
Detecção de rolagem em aplicativos híbridos e aplicativos multiplataforma
Em alguns aplicativos híbridos e multiplataforma, podemos retornar resultados inesperados quando itens em uma visualização de rolagem estão parcialmente fora da tela. Para testar um elemento quanto à acessibilidade, certifique-se de que ele esteja completamente na tela antes de realizar a verificação.
App Analyzer: Botão de Ação Flutuante desaparece
Introduzida com a API 31 (Android 12), está a capacidade de ocultar sobreposições não relacionadas ao sistema. Para utilizar o aplicativo Axe Analyzer, certifique-se de que essa configuração não esteja ativada. Se você optou por utilizar este recurso por seus aprimoramentos de segurança, recomendamos deixá-lo desativado para compilações de teste internas onde você pode utilizar dados de teste com segurança 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) na janela das atividades afetadas. setHideOverlayWindows(false)
Captura de tela ausente (caixa preta) no Dashboard
Para desbloquear a funcionalidade completa do Axe DevTools para dispositivos móveis, certifique-se de que as capturas de tela estão ativadas. Recomendamos ativar capturas de tela em uma versão de depuração ou teste do seu aplicativo que use dados simulados para evitar problemas de segurança. Confira nosso guia para ativar capturas de tela em aplicativos Android.
Falha quando minifiedEnabled está definido como verdadeiro
Se você minimizar sua build, verá uma falha com um log de erro indicando que um adaptador não pôde ser encontrado ao tentar fazer login na biblioteca Axe DevTools. Desative a minimização para suas builds de depuração com o Axe DevTools implementado. (#729)
Builds com r8 habilitado geram um erro
Uma build com 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)
Para resolver esse erro, adicione a seguinte linha ao seu arquivo ProGuard para manter as classes axeDevTools:
keep class com.deque.** { *; }Mensagens de erro ao usar APIs Compose
As APIs Compose estão obsoletas, por favor, use as APIs independentes de layout para continuar recebendo atualizações. Se você continuar a usar as APIs Compose e encontrar um erro semelhante a `Esperado exatamente '1' nó, mas encontrados '2' nós que atendem: (isRoot)` ou `Nenhuma Visão inicializada, você chamou AxeDevToolsCompose.setComposeTestRule()?`, por favor, consulte Compose setTestTag API.
MAUI: Regra de Nome de Texto de Edição
Devido a limitações da arquitetura de aplicativos MAUI no ecossistema Android, a regra de Nome de Texto de Edição aparecerá como Precisa de Revisão no painel quando uma falha for suspeitada para a versão 5.5.0 do SDK e superiores. Por favor, confirme o comportamento correto manualmente neste caso.
Android Nativo: Diálogos / Modais Customizados
Quando você estiver implementando diálogos ou modais personalizados que não estendem os controles nativos, pode 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 de maneira adequada com a tecnologia assistiva, conforme desejado.
Painel Web
Captura de Tela Ausente
Se a captura de tela estiver ausente na página de detalhes da verificação, seu aplicativo pode estar impedindo que capturas de tela sejam tiradas. Frequentemente, isso ocorre por razões de segurança em sua aplicação de produção. Considere remover este requisito para sua build de teste permitir funcionalidade completa no Painel Mobile do Axe DevTools.
Alguns nomes de verificação Android estão sem formatação
Alguns nomes de verificação Android que são definidos por padrão 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 verificação a partir do painel ou frameworks. (#1643)
