Sauce Labs com XCUITest
Usando o Axe DevTools Mobile, você pode encontrar problemas de acessibilidade com seus testes de UI. Integre seu teste com o Sauce Labs e obtenha insights sobre a experiência do público em seu aplicativo - antes mesmo de eles o verem! O Sauce Labs é a maior plataforma de testes baseada em nuvem, hospedando várias configurações de dispositivos e simuladores para aumentar sua confiança digital. Configure seus testes para serem executados no Sauce dentro da sua automação de build atual, para detectar problemas antes que eles cheguem à produção.
Abaixo está um guia para executar seus testes de UI integrados com Axe DevTools Mobile e Sauce Labs.
Pré-requisitos
- Prepare seu aplicativo para distribuição. Como o teste no Sauce Labs é realizado com dispositivos reais, ter o aplicativo e as metas UITest provisionadas antes de enviá-lo para o serviço deles para ser assinado novamente resultará em um processo mais suave.
- Instale a interface de linha de comando
saucectle configure suas credenciais do Sauce Labs. Siga as instruções do Sauce Labs.
Procurando um exemplo? Nosso Projeto iOS de Exemplo já tem uma integração pronta para testar.
- Verifique se você tem os pré-requisitos.
- Baixe o Github
- Abra uma janela do Terminal, digite
cde arraste e solte oaxe-devtools-ios-sample-appdo Finder na janela do Terminal. Pressione return/enter. - Na mesma janela, digite
sh prepareForSauceRealDevice.shOUsh prepareForSauceVirtualDevice.sh. Pressione return/enter.
Executando Testes em Dispositivos Reais
Adicionar Configuração do Sauce Labs
O Sauce Labs usa um arquivo yaml, localizado na raiz do projeto, .sauce/config.yml. Veja a configuração de exemplo abaixo para testar em dispositivos reais.
apiVersion: v1alpha
kind: xcuitest
sauce:
region: us-west-1
concurrency: 1
xcuitest:
# file names for real devices have the `.ipa` extension
app: "<app_name>.ipa"
testApp: "<app_name>UITests-Runner.ipa"
suites:
- name: "<app_name>UITests"
devices:
- name: "iPhone.*"
platformVersion: "17.2"Configuração de Build
A partir da pasta raiz do seu projeto no Terminal, execute o seguinte comando para criar builds de dispositivos sem precisar ter um dispositivo conectado ao seu computador:
xcodebuild build-for-testing -configuration Debug \
-scheme "$APP_SCHEME" \
-target "$APP_UITEST_TARGET" \
-sdk iphoneos \
-derivedDataPath "./DerivedData"Este comando irá gerar dois arquivos de aplicativo localizados em ./DerivedData/Build/Products/Debug-iphoneos/: seu aplicativo iOS e seus testes de UI (terminando em UITests-Runner).
Em seguida, converta ambos os arquivos de aplicativo para arquivos .ipa . Siga as instruções do Sauce Labs sobre a criação de .ipa arquivos.
Assim que os arquivos .ipa forem criados, crie uma pasta apps no diretório do projeto e adicione a ela ambos os arquivos .ipa.
Execute o seguinte comando para enviar os arquivos .ipa para o Sauce Labs e iniciar os testes:
saucectl runVocê está usando ferramentas adicionais de integração contínua? O Sauce Labs suporta testes dentro do seu ambiente atual. Saiba mais sobre a integração com seu pipeline de CI e Sauce Labs.
Automação
Uma vez que você tenha confirmado que suas configurações estão corretas, você está pronto para automatizar esse processo! Incluímos um script abaixo para construir automaticamente os arquivos .ipa para dispositivos, enviá-los para o Sauce Labs e executar seus XCUITests. Sua equipe também pode usar este script para iniciar manualmente uma execução de teste no Sauce Labs.
APP_LOCATION="DerivedData/Build/Products/Debug-iphoneos"
APP_NAME="<app_name>"
rm -rf *.ipa
xcodebuild build-for-testing -configuration Debug \
-scheme "<scheme_name>" \
-target "<UITests target>" \
-sdk iphoneos \
-derivedDataPath "./DerivedData" \
-quiet
mkdir Payload
mv $APP_LOCATION/$APP_NAME.app Payload
zip -r -qq "$APP_NAME.ipa" Payload
rm -rf Payload/*
mv $APP_LOCATION/${APP_NAME}UITests-Runner.app Payload
zip -r -qq "${APP_NAME}UITests-Runner.ipa" Payload
saucectl run
rm -rf Payload
rm -rf DerivedDataExecutando Testes em Dispositivos Virtuais
Você pode executar testes automatizados XCUITest com Dispositivos Virtuais no Sauce Labs! Siga os passos abaixo para começar.
Adicionar Configuração do Sauce Labs
Ao testar com simuladores, sua configuração estará localizada na raiz do projeto, .sauce/config.yml. Se você já realizou testes com dispositivos reais antes, deve notar que a configuração para simuladores é diferente da configuração que você usa para dispositivos reais. A extensão .zip é usada nos nomes de arquivo para app e testApp, e suites lista 'simuladores' em vez de 'dispositivos'.
apiVersion: v1alpha
kind: xcuitest
sauce:
region: us-west-1
concurrency: 1
xcuitest:
# file names for simulators use the `.zip` extension
app: "<app_name>.zip"
testApp: "<app_name>UITests-Runner.zip"
suites:
- name: "<app_name>UITests"
simulators:
- name: "iPhone 12 Simulator"
platformVersions:
- "16.2"Se você quiser usar tanto Dispositivos Reais quanto Simuladores, deve criar duas suites configurações separadas e fornecer app e testApp configuração para each suite.
Configuração de Build
Você irá construir o aplicativo e o executor de testes especificamente para simuladores, usando o trecho a seguir como seu guia. Se você já fez testes com Dispositivos Reais antes, pode notar algumas diferenças aqui - -sdk iphonesimulator, EXCLUDED_ARCHS="" e CODE_SIGN_IDENTITY...
xcodebuild build-for-testing -configuration Debug \
-scheme "$APP_SCHEME" \
-target "$APP_UITEST_TARGET" \
-sdk iphonesimulator \
-derivedDataPath "./DerivedData" \
EXCLUDED_ARCHS="" \
CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NOAgora, compacte os arquivos .app para preparar o upload para o Sauce Labs.
zip -r testApp.zip testApp.app
zip -r testRunner.zip testRunner.appFinalmente, execute o seguinte comando para enviar seus arquivos .zip e começar os testes.
saucectl runAutomação
Depois de configurar a configuração para testes em simuladores, você poderá automatizar esse processo! Use o script abaixo para construir automaticamente os arquivos .app para simuladores, compactá-los, enviá-los para o Sauce Labs e executar seus XCUITests.
APP_LOCATION="DerivedData/Build/Products/Debug-iphonesimulator"
APP_NAME="<app_name>"
RUNNER_NAME="<testApp_name>"
rm -rf $APP_NAME.zip $RUNNER_NAME.zip
xcodebuild build-for-testing -configuration Debug \
-scheme "<scheme_name>" \
-target "<UITests target>" \
-sdk iphonesimulator \
-derivedDataPath "./DerivedData" \
-quiet \
EXCLUDED_ARCHS="" \
CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
zip -r -qq $APP_NAME.zip $APP_LOCATION/$APP_NAME.app
zip -r -qq $RUNNER_NAME.zip $APP_LOCATION/$RUNNER_NAME.app
saucectl run
rm -rf DerivedData