De v5 para v6
Este tutorial é para pessoas que ainda estão usando a v5 do WebdriverIO e querem migrar para a v6 ou para a versão mais recente do WebdriverIO. Como mencionado em nosso post de lançamento, as mudanças para esta atualização de versão podem ser resumidas da seguinte forma:
-
consolidamos os parâmetros para alguns comandos (por exemplo,
newWindow,react$,react$$,waitUntil,dragAndDrop,moveTo,waitForDisplayed,waitForEnabled,waitForExist) e movemos todos os parâmetros opcionais para um único objeto, por exemplo:// v5
browser.newWindow(
'https://webdriver.io',
'WebdriverIO window',
'width=420,height=230,resizable,scrollbars=yes,status=1'
)
// v6
browser.newWindow('https://webdriver.io', {
windowName: 'WebdriverIO window',
windowFeature: 'width=420,height=230,resizable,scrollbars=yes,status=1'
}) -
configurações para serviços foram movidas para a lista de serviços, por exemplo:
// v5
exports.config = {
services: ['sauce'],
sauceConnect: true,
sauceConnectOpts: { foo: 'bar' },
}
// v6
exports.config = {
services: [['sauce', {
sauceConnect: true,
sauceConnectOpts: { foo: 'bar' }
}]],
} -
algumas opções de serviço foram renomeadas para fins de simplificação
-
renomeamos o comando
launchAppparalaunchChromeApppara sessões do Chrome WebDriver
Se você está usando WebdriverIO v4 ou inferior, por favor, atualize para v5 primeiro.
Embora gostaríamos de ter um processo totalmente automatizado para isso, a realidade é diferente. Todos têm uma configuração diferente. Cada etapa deve ser vista como orientação e menos como uma instrução passo a passo. Se você tiver problemas com a migração, não hesite em entrar em contato conosco.
Configuração
Semelhante a outras migrações, podemos usar o codemod do WebdriverIO. Para instalar o codemod, execute:
npm install jscodeshift @wdio/codemod
Atualizar Dependências do WebdriverIO
Dado que todas as versões do WebdriverIO estão ligadas umas às outras, é melhor sempre atualizar para uma tag específica, por exemplo, 6.12.0. Se você decidir atualizar da v5 diretamente para a v7, você pode omitir a tag e instalar as versões mais recentes de todos os pacotes. Para fazer isso, copiamos todas as dependências relacionadas ao WebdriverIO do nosso package.json e reinstalamos através de:
npm i --save-dev @wdio/allure-reporter@6 @wdio/cli@6 @wdio/cucumber-framework@6 @wdio/local-runner@6 @wdio/spec-reporter@6 @wdio/sync@6 wdio-chromedriver-service@6 webdriverio@6
Normalmente, as dependências do WebdriverIO fazem parte das dependências de desenvolvimento, dependendo do seu projeto isso pode variar. Depois disso, seu package.json e package-lock.json devem ser atualizados. Nota: estas são dependências de exemplo, as suas podem ser diferentes. Certifique-se de encontrar a versão v6 mais recente chamando, por exemplo:
npm show webdriverio versions
Tente instalar a versão 6 mais recente disponível para todos os pacotes principais do WebdriverIO. Para pacotes da comunidade, isso pode variar de pacote para pacote. Aqui, recomendamos verificar o changelog para obter informações sobre qual versão ainda é compatível com a v6.
Transformar o Arquivo de Configuração
Um bom primeiro passo é começar com o arquivo de configuração. Todas as mudanças importantes podem ser resolvidas usando o codemod de forma totalmente automática:
npx jscodeshift -t ./node_modules/@wdio/codemod/v6 ./wdio.conf.js
O codemod ainda não suporta projetos TypeScript. Consulte @webdriverio/codemod#10. Estamos trabalhando para implementar suporte em breve. Se você estiver usando TypeScript, por favor, participe!
Atualizar Arquivos de Especificação e Objetos de Página
Para atualizar todas as alterações de comando, execute o codemod em todos os seus arquivos e2e que contêm comandos WebdriverIO, por exemplo:
npx jscodeshift -t ./node_modules/@wdio/codemod/v6 ./e2e/*
É isso! Não são necessárias mais alterações 🎉
Conclusão
Esperamos que este tutorial o oriente um pouco durante o processo de migração para o WebdriverIO v6. Recomendamos fortemente continuar atualizando para a versão mais recente, dado que a atualização para v7 é trivial devido a quase nenhuma mudança importante. Por favor, confira o guia de migração para atualizar para v7.
A comunidade continua a melhorar o codemod enquanto o testa com várias equipes em várias organizações. Não hesite em criar uma issue se tiver feedback ou iniciar uma discussão se tiver dificuldades durante o processo de migração.