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 versões offline de nossos SDKs e drivers Appium para o seu pipeline de automação que não requerem solicitações de rede para o serviço Axe DevTools Mobile. Como tal, essas configurações de build estão disponíveis apenas através de Artifactory da Deque.
Por favor, note que esta build é um subconjunto de recursos dentro do axeDevTools Mobile para Android. Para utilizar o conjunto completo de recursos, incluindo enviar resultados para o dashboard, use nossos SDKs ou drivers Appium padrão. Consulte o guia de introdução.
Configuração
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 Início:
- Requer: Android API 26 ou superior
- Conecte-se a Artifactory para puxar o framework.
Configuração para Teste
No arquivo build.gradle do do aplicativo, adicione:
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/AL2.0'
exclude 'META-INF/LGPL2.1'
}
}Certifique-se de que há permissão de Internet no ::
<uses-permission android:name="android.permission.INTERNET" />Note que o
Note 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 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:
- Forneça uma chave de API válida do Axe DevTools Mobile ao inicializar a biblioteca Axe em seus testes. Visite Configurações de Conta do Axe para encontrar suas Chaves de API ou Gerar uma nova chave de API Axe DevTools Mobile.
- Forneça um ID de Projeto válido 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 ele *é* necessário para enviar resultados para o Developer Hub. Quando você Cria um Projeto para Seus Resultados, um ID de Projeto é gerado automaticamente.
- Chame a função
uploadToDashboardapós cada varredura em seu teste para enviar resultados para o Developer Hub. - Veja um exemplo completo. Consulte o Classe de Teste Exemplo para Android e compare com a sua implementação.
Looking for your Project ID? You can access this from the main Projects page in Axe Developer Hub.
- Go to 'Settings' for your project and select 'Configure Project'.
- In the 'Project Details' you can find and copy the Project ID.
- Make sure you have provided this Project ID to the
startScanSessionmethod.
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** > Configurações (ou Preferências em versões mais antigas)
- Selecione a aba Contas
- Selecione seu ID Apple
- Clique em Gerenciar Certificados
- 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 Desenvolvimento Apple para criar um novo certificado
- Feche o aplicativo Mobile Analyzer
- Inicie o aplicativo novamente. Consulte o 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é **Certificados, Identificadores e Perfis**
- Encontre o certificado expirado e revogue-o
- Volte para o Xcode e repita os passos acima para criar um novo
- Limpe os dados derivados:
- No **Xcode**: aba **Janela** > **Organizador** > **Projetos**
- Selecione seu projeto e clique em **Excluir** ao lado de **Dados Derivados**
- 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 **Finder** (macOS Catalina ou posterior) ou **iTunes** (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 **Xcode**: **Janela** > **Dispositivos e Simuladores**, selecionar seu dispositivo e copiar o identificador
- Adicione o dispositivo à sua conta de Desenvolvedor:
- Vá para developer.apple.com e faça login
- Navegue até **Certificados, Identificadores e Perfis**
- Selecione **Dispositivos** na barra lateral
- Clique no botão de mais (**+**) para registrar um novo dispositivo
- Digite um nome para o seu dispositivo e cole o UDID
- Clique em **Continuar** e depois em **Registrar**
- Reinicie o Mobile Analyzer:
- Feche o aplicativo Mobile Analyzer
- Inicie o aplicativo novamente. Consulte o 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?
Somente 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 ótima em segurança, e usa um ambiente sandbox para cada aplicativo que você instalou no seu dispositivo, não importa como esse aplicativo foi instalado (Testflight, Xcode ou App Store). O aplicativo de análise utiliza a funcionalidade de Teste de IU incorporada no ecossistema Xcode/Apple. Esta é uma comunicação de caixa fechada para conversar 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 este erro aparecer uma segunda vez, certifique-se de que você tem o identificador de pacote correto em vigor e que o aplicativo a ser testado está aberto no simulador/dispositivo selecionado. -
caught error: “couldNotVerifyUser”: Falha no login com Deque. Verifique se sua chave de API foi adicionada ao arquivo de configuração e é válida para o Axe DevTools Mobile visitando Configurações da Conta Axe.
Posso configurar para teste automatizado sem autenticação?
Oferecemos versões offline de nossos SDKs e drivers Appium para o seu pipeline de automação que não requerem solicitações de rede para o serviço Axe DevTools Mobile. Como tal, essas configurações de build estão disponíveis apenas através de Artifactory da Deque.
Por favor, note que esta build é um subconjunto de recursos dentro do axeDevToolsXCUI. Para utilizar o conjunto completo de recursos, incluindo enviar resultados para o dashboard, utilize 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:
- Forneça uma chave de API válida do Axe DevTools Mobile ao inicializar o framework Axe em seus testes. Visite Configurações de Conta do Axe para encontrar suas Chaves de API ou Gerar uma nova chave de API Axe DevTools Mobile.
- Forneça um ID de Projeto válido 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 ele *é* necessário para enviar resultados para o Developer Hub. Quando você Cria um Projeto para Seus Resultados, um ID de Projeto é gerado automaticamente.
- Chame a função
postResultapós cada varredura em seu teste para enviar resultados para o Developer Hub. - Veja um exemplo completo. Consulte o Classe de Teste de Exemplo para iOS 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
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 Deque's Artifactory:
Android
appium driver install --source=npm @axe-devtools/axe-appium-uiautomator2-driver-offlineiOS
appium driver install --source=npm @axe-devtools/axe-appium-xcuitest-driver-offlineAlternativamente, você pode baixá-lo diretamente do 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á em formato de string e será semelhante a 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:
- Certifique-se de ter fornecido uma chave de API válida do Axe DevTools Mobile ao iniciar uma sessão de teste e iniciar uma varredura. Visite Configurações de Conta do Axe para encontrar suas Chaves de API ou Gerar uma nova chave de API Axe DevTools Mobile.
- Certifique-se de ter fornecido um ID de Projeto válido juntamente 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 *é* necessário para enviar resultados ao Developer Hub. Quando você Cria um Projeto para Seus Resultados, um ID de Projeto é gerado automaticamente.
- Veja exemplos completos de automação do Axe DevTools Mobile para Appium e compare com a sua implementação.
Procurando seu ID de Projeto? Você pode acessá-lo na página principal de Projetos no 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.
