Perguntas Frequentes
Android
Analisador Móvel
Por que o app precisa de permissões extras?
Ao configurar o aplicativo pela primeira vez, você será solicitado a conceder permissão ao Axe DevTools Mobile Analyzer para configurações de sobreposição de desenho e acessibilidade. A sobreposição de desenho permite que o botão de ação flutuante te acompanhe, independentemente do aplicativo que você tenha aberto no dispositivo. As configurações de acessibilidade permitem que o aplicativo de análise acesse informações de visualização dentro do aplicativo que você está tentando escanear.
Teste Automatizado
Posso configurar testes automatizados sem autenticação?
Oferecemos compilações offline de nossos SDKs e drivers Appium para seu pipeline de automação que não requerem nenhuma solicitação de rede ao serviço Axe DevTools Mobile. Assim sendo, essas configurações de compilação estão disponíveis apenas através de Artifactory da Deque.
Observe que esta compilação é um subconjunto de funcionalidades dentro do Axe DevTools Mobile para Android. Para usar o conjunto completo de funcionalidades, incluindo o envio de resultados para o painel, utilize nossos SDKs ou drivers Appium padrão. Consulte o guia de introdução.
Setup
Ao navegar pela documentação, observe que nem todos os recursos que requerem interação com o servidor estão disponíveis na build offline.
Lista de Verificação para Iniciar:
- Requer: Android API 26 ou superior
- Conecte-se a Artifactory para puxar o framework.
Configuração para Teste
No arquivo applicationde build.gradle , adicione:
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/AL2.0'
exclude 'META-INF/LGPL2.1'
}
}Certifique-se de que há permissão para Internet no AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />Note que o
Observe que o axe.loginWithUsername(...) e o axe.loginWithApiKey(...) não estão disponíveis nesta versão da biblioteca e devem ser removidos do código de configuração se você estiver convertendo do uso da versão autenticada.
Resultados
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Rule
@JvmField
var rule: ActivityScenarioRule<MainActivity> = ActivityScenarioRule(MainActivity::class.java)
companion object {
private val axe = AxeDevTools()
init {
axe.setOfflineLicenseKey("deque_provided_license_key_here")
}
axe.setInstrumenation(InstrumentationRegistry.getInstrumentation())
}
@Test
fun exampleTest() {
onView(withText("Example Button Name")).perform(click())
}
@After
fun runAccessibilityScan() {
val scan = axe.scan()
val result = scan?.getSerializedResult()
axe.tearDown()
}
}Resultados
Por que meus resultados não estão aparecendo no Developer Hub?
Se você não vê seus resultados no Developer Hub, verifique se fez o seguinte:
- Provide a valid Axe DevTools Mobile API key ao iniciar a biblioteca Axe em seus testes. Visite Configurações da Conta Axe para encontrar suas Chaves de API ou Gerar uma nova chave de API Axe DevTools Mobile.
- Provide a valid Project ID junto com a chave de API ao iniciar uma sessão de teste. Um ID do Projeto não é necessário para iniciar uma sessão de teste, mas é is necessário para enviar resultados ao Developer Hub. Quando você Cria um Projeto para Seus Resultados, um ID do Projeto é gerado automaticamente.
- Call the
uploadToDashboardfunction após cada varredura em seu teste para enviar resultados ao Developer Hub. - See a full example. Consulte o Classe de Teste Exemplo para Android e compare com sua implementação.
Procurando por seu ID de Projeto? Você pode acessá-lo na página principal de Projetos em Axe Developer Hub.
- Vá para 'Configurações' do seu projeto e selecione 'Configurar Projeto'.
- Em 'Detalhes do Projeto', você pode encontrar e copiar o ID do Projeto.
- Certifique-se de ter fornecido este ID de Projeto para o
startScanSessionmétodo.
iOS
Analisador Móvel
O que fazer se meu Certificado de Desenvolvimento Apple estiver expirado?
Se você receber um erro ao usar o Mobile Analyzer Desktop App dizendo que seu Certificado de Desenvolvimento Apple expirou, siga os passos abaixo.
Correção Rápida
- Abra o Xcode → Vá para Xcode > Settings (ou Preferences em versões mais antigas)
- Selecione a guia Accounts
- Selecione seu Apple ID
- Clique em Manage Certificates
- Encontre o certificado expirado (terá um ícone de aviso)
- Selecione o certificado expirado e clique no botão de menos (−) para removê-lo
- Clique no botão de mais (+) e selecione Apple Development para criar um novo certificado
- Feche o aplicativo Mobile Analyzer
- Inicialize o aplicativo novamente. Consulte Testar Apps iOS para Acessibilidade se necessário
Ainda está recebendo um erro?
Às vezes, o Xcode armazena em cache o certificado antigo. Tente o seguinte:
- Revogue o certificado na sua conta de Desenvolvedor Apple:
- Vá para developer.apple.com
- Navegue até Certificates, Identifiers & Profiles
- Encontre o certificado expirado e revogue-o
- Volte para o Xcode e repita os passos acima para criar um novo
- Limpe os dados derivados:
- Em Xcode: Window > Organizer > Projects guia
- Selecione seu projeto e clique em Delete próximo a Derived Data
- Reinicie o Xcode após fazer essas mudanças
O que devo fazer se meu dispositivo não pôde ser registrado automaticamente?
Para registrar manualmente um telefone na sua conta de Desenvolvedor da Apple, você precisará adicioná-lo como um dispositivo de teste pelo portal de Desenvolvedores da Apple. Veja como:
- Obtenha o UDID (Identificador Único do Dispositivo) do seu dispositivo:
- Conecte seu iPhone ao seu Mac
- Abra o Finder (macOS Catalina ou posterior) ou iTunes (em versões mais antigas)
- Selecione seu dispositivo e clique no número de série até que ele exiba o UDID
- Clique com o botão direito e copie o UDID
- Alternativamente, você pode abrir o Xcode: Window > Devices and Simulators, selecione seu dispositivo e copie o identificador
- Adicione o dispositivo à sua conta de Desenvolvedor:
- Vá para developer.apple.com e faça login
- Navegue até Certificates, Identifiers & Profiles
- Selecione Devices na barra lateral
- Clique no símbolo de mais (+) para registrar um novo dispositivo
- Digite um nome para o seu dispositivo e cole o UDID
- Clique em Continue e depois em Register
- Reinicie o Mobile Analyzer:
- Feche o aplicativo Mobile Analyzer
- Abra o aplicativo novamente. Consulte Testar Apps iOS para Acessibilidade se necessário
Lembre-se de que contas gratuitas de Desenvolvedor Apple podem registrar até 3 dispositivos, enquanto contas pagas podem registrar até 100 dispositivos por tipo de dispositivo (100 iPhones, 100 iPads, etc.).
Teste Automatizado
O que é um identificador de pacote?
Um identificador de pacote é um identificador único dentro do ecossistema da Apple para a identificação de aplicativos. Nenhum dois aplicativos podem ter o mesmo identificador. Isso inclui uma versão beta ou outras variações de um aplicativo. O Axe DevTools Mobile usa o identificador de pacote para conectar e consultar as informações de acessibilidade das visualizações do aplicativo em teste.
Precisa testar um aplicativo da App Store? Podemos buscar o identificador de pacote para você. Pesquise o listagem do seu aplicativo na App Store a partir de um navegador da web e use-o para encontrar o ID do Pacote do seu app.
A que o Aplicativo Runner instalado tem acesso?
Apenas o aplicativo que você especificou para se comunicar, através da adição do Identificador de Pacote nas etapas de configuração. A Apple é realmente excelente em segurança e utiliza um ambiente sandbox para cada aplicativo que você instalou em seu dispositivo, não importa como esse aplicativo foi instalado (Testflight, Xcode ou App Store). O aplicativo analisador utiliza a funcionalidade de Teste de Interface do Usuário integrada ao Xcode/ecossistema da Apple. Esta é uma comunicação de caixa fechada para se comunicar com um aplicativo através do identificador de pacote que você especificou no arquivo de configuração.
Erros Comuns & Correção
Se você receber um erro / Teste Falhou durante os testes, esta seção destacará as mensagens de erro comuns e como resolvê-las. Selecione o ícone 'x' vermelho em forma de diamante, e o Xcode abrirá o painel 'Navegador de Problemas' à esquerda para destacar a mensagem de erro específica.
Cannot request screenshot data because it does not exist: Esta é a mensagem de erro que você provavelmente receberá na primeira execução. Execute o teste novamente para ver se ele se resolve. Se esse erro aparecer uma segunda vez, certifique-se de que você tem o identificador de pacote correto e que o aplicativo a ser testado está aberto no simulador/dispositivo selecionado.caught error: “couldNotVerifyUser”: O login com o Deque falhou. Verifique se sua chave de API foi adicionada ao arquivo de configuração e se é válida para o Axe DevTools Mobile visitando Configurações da Conta Axe.
Posso configurar testes automatizados sem autenticação?
Oferecemos compilações offline de nossos SDKs e drivers Appium para seu pipeline de automação que não requerem nenhuma solicitação de rede para o serviço Axe DevTools Mobile. Como tal, essas configurações de compilação estão disponíveis apenas através de Artifactory da Deque.
Observe que esta compilação é um subconjunto de capacidades dentro do axeDevToolsXCUI. Para usar o conjunto completo de capacidades, incluindo enviar resultados para o painel, use nosso framework axeDevToolsXCUI. Consulte o guia de configuração.
Configuração
- Importe o framework em qualquer arquivo usado para testes de acessibilidade.
import axeDevToolsXCUI_noauth- Crie um objeto dentro da sua classe de teste para manter a instância do Axe DevTools:
var axeDevTools: AxeDevTools?- Inicialize o framework dentro dos métodos
setUpousetUpWithError.
axeDevTools = AxeDevTools.startScanSession()Exemplo Completo de Configuração
import axeDevToolsXCUI_noauth
import XCTest
class MyUITests: XCTestCase {
var axeDevTools: AxeDevTools?
override func setUpWithError() throws {
axeDevTools = AxeDevTools.loginWithLicenseKey("deque_provided_license_key_here") // does this change??
}
...
}Testes de UI
Para começar os testes, passe qualquer XCUIElement para o framework para executar testes de acessibilidade contra ele e seus filhos.
let result = try axeDevTools.run(onElement: XCUIApplication())Exemplo Completo
import XCTest
import axeDevToolsXCUI_noauth
final class XCUI_noAuthUITest: XCTestCase {
var axeDevTools: AxeDevTools = AxeDevTools.startScanSession()
override func setUpWithError() throws {
continueAfterFailure = false
}
func testExample() throws {
let app = XCUIApplication()
app.launch()
let result = try axeDevTools.run(onElement: app)
// Do something with the result
}
}O que vem a seguir?
Nós fornecemos os dados e ferramentas para criar um fluxo de trabalho CI/CD que ajuda sua equipe. Aqui estão algumas sugestões sobre o que fazer com esse objeto de resultado:
- Falhe a compilação se falhas forem encontradas. Se você tiver uma tela que já foi limpa de problemas de acessibilidade, talvez queira garantir que nenhum novo problema surja no ciclo de desenvolvimento, verificando se a contagem é 0, e falhando a verificação de status do pull-request se não for.
// Add an assertion to fail the build if issues were found
XCTAssertTrue(result.failures.count > 0)- Salve os resultados localmente para criar um relatório detalhado dos problemas encontrados no ramo. Confira como criar um relatório com o nosso CLI de Relatórios para pipelines CICD. Isso pode ser realmente útil para ramos de versões candidatas a lançamento ou beta para trazer consciência sobre os possíveis obstáculos que clientes usando tecnologia assistiva podem enfrentar.
Resultados
Por que meus resultados não estão aparecendo no Developer Hub?
Se você não vê seus resultados no Developer Hub, verifique se fez o seguinte:
- Provide a valid Axe DevTools Mobile API key ao inicializar o framework Axe em seus testes. Visite Configurações da Conta Axe para encontrar suas Chaves de API ou Gerar uma nova chave de API Axe DevTools Mobile.
- Provide a valid Project ID junto com a chave de API ao iniciar uma sessão de teste. Um ID de Projeto não é necessário para iniciar uma sessão de teste, mas é is necessário para enviar resultados ao Developer Hub. Quando você Cria um Projeto para Seus Resultados, um ID de Projeto é gerado automaticamente.
- Call the
postResultfunction após cada varredura em seu teste para enviar resultados ao Developer Hub. - See a full example. Consulte o Classe de Teste de Exemplo para iOS e compare com sua implementação.
Procurando por seu ID de Projeto? Você pode acessá-lo na página principal de Projetos em Axe Developer Hub.
- Vá para 'Configurações' do seu projeto e selecione 'Configurar Projeto'.
- Em 'Detalhes do Projeto', você pode encontrar e copiar o ID do Projeto.
- Certifique-se de ter fornecido este ID de Projeto para o
startScanSessionmétodo.
Appium
Teste Automatizado
Posso configurar para teste automatizado sem autenticação?
Você pode executar uma varredura com nossos drivers offline do Appium, usando uma chave de licença fornecida pela Deque. Isso pode ser útil ao trabalhar com provedores de nuvem ou quando você precisa executar varreduras sem fazer solicitações de rede para o serviço Axe DevTools Mobile.
Instalação
Você pode instalar os drivers offline do Appium usando um pacote npm privado de Artifactory da Deque:
Android
appium driver install --source=npm @axe-devtools/axe-appium-uiautomator2-driver-offlineiOS
appium driver install --source=npm @axe-devtools/axe-appium-xcuitest-driver-offlineDownload Direto
Alternativamente, você pode baixá-lo diretamente da Agora e instalá-lo localmente. Consulte nossa documentação em Configuração para Nuvem Privada e On Prem para mais detalhes.
Chave de Licença
Você precisará de uma chave de licença da Deque para usar esta versão offline do driver Appium. Por favor, envie uma solicitação para helpdesk@deque.com ou para support.deque.com.
A chave de licença estará no formato de string e se parecerá com isto:
eyJjb21wYW55TmFtZSI6Ik1vYmlsZSBUZWFtIiwiZXhwaXJlcyI6MTcyMzk5NDk1MDY2NX0=.+aHokyifCnw6peuAmAq75IGrTjVSpkRhhfBWnf92Hp0WV3FF5Qph/KFNr7ALzi6/3K7BcSMKnelqtnwrd6mMkQ==É altamente recomendável adicionar essa chave de licença às suas variáveis de ambiente para segurança.
Verificação Offline
Para executar uma varredura, certifique-se de que sua chave de licença está incluída em axeSettings.
const axeSettings = {
'licenseKey': 'YOUR_LICENSE_KEY_HERE'
};
const result = await driver.execute('mobile: axeScan', axeSettings);Em axeSettings, as seguintes propriedades opcionais estão disponíveis:
ignoreRules(padrão:[])ignoreExperimental(padrão:false)
A seguir estão exemplos completos de verificações offline com nossos drivers Appium, usando o framework de testes Mocha em JavaScript.
Android
const { remote } = require('webdriverio');
const assert = require('assert');
describe('AxeScan', () => {
let driver;
let axeSettings;
before(async () => {
axeSettings = {
// Your license key has been stored in an environment variable for security
licenseKey: process.env.AXE_LICENSE_KEY
};
driver = await remote({
hostname: 'localhost',
port: 4723,
capabilities: {
platformName: 'Android',
'appium:automationName': 'AxeUiAutomator2',
'appium:deviceName': 'Android',
'appium:appPackage': 'com.android.settings',
'appium:appActivity': '.Settings',
},
logLevel: 'silent'
});
});
after(async () => {
await driver.deleteSession();
});
it('scan settings screen', async () => {
// run accessibility scan
const result = await driver.execute('mobile: axeScan', axeSettings);
// ensure no errors were encountered during the scan
if (result.axeError) {
assert.fail(`AxeScan failed with error: ${result.axeError}`);
}
const failCount = result.axeRuleResults.filter(rule => rule.status === 'FAIL').length;
// assert that there are no accessibility violations
assert.strictEqual(failCount, 0);
});
});iOS
const { remote } = require('webdriverio');
const assert = require('assert');
describe('AxeScan', () => {
let driver;
let axeSettings;
before(async () => {
axeSettings = {
// Your license key has been stored in an environment variable for security
licenseKey: process.env.AXE_LICENSE_KEY
};
driver = await remote({
hostname: 'localhost',
port: 4723,
capabilities: {
platformName: 'iOS',
'appium:automationName': 'AxeXCUITest',
'appium:bundleId': 'com.apple.Maps',
'appium:udid': '...', // xcrun simctl list | grep Booted
},
logLevel: 'silent'
});
});
after(async () => {
await driver.deleteSession();
});
it('scan settings screen', async () => {
// run accessibility scan
const result = await driver.execute('mobile: axeScan', axeSettings);
// ensure no errors were encountered during the scan
if (result.axeError) {
assert.fail(`AxeScan failed with error: ${result.axeError}`);
}
const failCount = result.axeRuleResults.filter(rule => rule.status === 'FAIL').length;
// assert that there are no accessibility violations
assert.strictEqual(failCount, 0);
});
});Resultados
Por que meus resultados não estão aparecendo no Developer Hub?
Se você não vê seus resultados no Developer Hub, verifique se fez o seguinte:
- Provide a valid Axe DevTools Mobile API key ao inicializar a biblioteca Axe em seus testes. Visite Configurações da Conta Axe para encontrar suas Chaves de API ou Gerar uma nova chave de API Axe DevTools Mobile.
- Provide a valid Project ID junto com a chave de API ao iniciar uma sessão de teste. Um ID de Projeto não é necessário para iniciar uma sessão de teste, mas é is necessário para enviar resultados ao Developer Hub. Quando você Cria um Projeto para Seus Resultados, um ID de Projeto é gerado automaticamente.
- Call the
uploadToDashboardfunction após cada varredura em seu teste para enviar resultados para o Developer Hub. - See exemplos completos de automação do Axe DevTools Mobile para Appium e compare com a sua implementação.
Procurando por seu ID de Projeto? Você pode acessá-lo na página principal de Projetos em Axe Developer Hub.
- Vá para 'Configurações' do seu projeto e selecione 'Configurar Projeto'.
- Em 'Detalhes do Projeto', você pode encontrar e copiar o ID do Projeto.
- Certifique-se de ter fornecido este ID de Projeto para o
axeStartSessionmétodo.
