Conheça o Codeception 3.0

Chegou a hora de dar vida à nova versão principal do Codeception! Ao longo dos anos de evolução e aprimoramento contínuo, aprendemos muito e hoje apresentamos a melhor versão do Codeception. Ainda acreditamos que a facilidade de teste é importante: os testes de leitura, gravação e depuração devem ser fáceis.

É difícil manter um projeto que tenta cobrir todos os tipos de frameworks e CMS, do Symfony ao WordPress, do Laravel ao Magento. Mas vemos que as pessoas dessas comunidades enviam regularmente patches para nós, e nossa filosofia é separar os testes da estrutura, compartilhar soluções semelhantes por meio de módulos - da maneira certa. Nossa incrível comunidade continua a melhorar este projeto.

OK, e o Codeception 3.0?

Alterações incompatíveis


Suporte para PHPUnit 8


Na versão 3.0, não quebramos nada. Deixei para o próximo grande lançamento. Portanto, não estamos criando uma versão suportada do PHP: o Codeception 3.0 ainda é compatível com o PHP 5.6+, porque o teste deve estar acessível a todos. Ele ainda suporta todas as principais estruturas e é compatível com o PHPUnit 6 e o ​​PHPUnit 7.

No entanto, armazenar todas essas partes é difícil e assumimos que na versão 3.0 você pode obter uma possível alteração crítica, porque adicionamos suporte ao PHPUnit 8. Caso contrário, a atualização deve ser suave para você. Se você tiver problemas para atualizar, altere a versão do PHPUnit para 6 ou 7 no compositer.json:

"phpunit/phpunit": "^7.0" 

Agradecemos ao nosso principal colaborador, @Naktibalda, por oferecer suporte ao PHPUnit 8 sem comprometer a compatibilidade. Foi um trabalho enorme e, se você olhar para o nosso projeto de codeception / phpunit-wrapper , entenderá o porquê.

Módulos remotos


Decidimos abandonar alguns dos módulos antigos, que esperamos que ninguém use. Isto é:

  • AngularJS - funcionou apenas para Angular 1
  • ZF1 - a estrutura está obsoleta
  • Yii1 - a estrutura está obsoleta
  • Silex - a estrutura está obsoleta
  • Facebook - módulo não suportado
  • XMLRPC - módulo não suportado

Se você precisar deles, basta copiar o código da ramificação 2.5 e criar um auxiliar personalizado.

Padrões modificados


Se você usar o teste de várias sessões e os comandos $ I-> haveFriend, verá que seus testes falharam. Os métodos de amizade não estão mais incluídos na classe Codeception \ Actor , portanto, você deve adicioná-los manualmente. No seu AcceptanceTester (ou outra classe que usa teste de várias sessões), inclua a característica Codeception \ Lib \ Actor \ Shared :

 <?php class AcceptanceTester extends \Codeception\Actor { use _generated\AcceptanceTesterActions; use \Codeception\Lib\Actor\Shared\Friend; } 

Também desativamos as instruções condicionais para novas instalações (porque as pessoas costumam abusar delas); portanto, se você deseja usar os métodos canSee , precisará ativá-las.

Novos recursos


Shell Interativo Aprimorado


Esse recurso foi transferido do nosso amigável projeto CodeceptJS . Ela adiciona uma nova interface REPL , então agora você pode pausar o teste e executar vários comandos no console.

Esse recurso altera completamente a maneira como você escreve seus testes funcionais e de aceitação. Em vez de tentar cegamente comandos diferentes e reiniciar constantemente os testes, você pode escrever:

 <?php $I->amOnPage('/'); $I->pause(); 

e comece a digitar comandos um após o outro, passo a passo para escrever um teste. Copie as equipes bem-sucedidas em seus testes e, no final, você obtém um teste totalmente funcional. Se você usa o WebDriver , pode escrever um teste de aceitação completo usando uma única sessão do navegador.

Diferente da implementação anterior do shell interativo baseado em hoa / console , você pode usar as teclas Esquerda, Direita para editar a entrada:

consola

Métodos de tentativa e nova tentativa


Esses métodos foram introduzidos para tornar o teste do navegador menos doloroso. Em um mundo cheio de JavaScript e aplicativos de uma página, você não pode mais confiar em eventos individuais; às vezes, você precisa repetir a ação várias vezes para executá-la.

Agora você pode fazer isso com os métodos de nova tentativa * que podem ajudar a estabilizar as etapas dos seus testes:

 <?php // use $I->retryClick('Create'); // instead of just $I->click('Create'); 

Esse recurso também foi portado do CodeceptJS, mas implementado de maneira um pouco diferente.

Mas e se o seu site tiver que se comportar de maneira diferente em ambientes diferentes? Por exemplo, mostre uma notificação de aceitação de cookies dependendo da região e aceite cookies se essa notificação for exibida? Você pode fazer isso usando as ações tryTo *:

 <?php if ($I->tryToSeeElement('.alert.cookie')) { $I->click('Accept', '.cookie'); } 

Os métodos try * e retry * foram implementados como decoradores passo a passo, permitindo gerar ações adicionais envolvendo os métodos do módulo. Instruções condicionais (métodos canSee *) também foram refatoradas como decoradores passo a passo. Então, você precisa ativá-los explicitamente nas configurações.

Artefatos de Saída


Os testes com falha agora contêm uma lista de todos os artefatos disponíveis. Para o teste da API REST, cada teste conterá o corpo da última resposta para simplificar a depuração nos servidores de IC.

artefatos

Instalação e atualização


Para atualizar para a versão 3, basta alterar a versão em "compositer.json para" ^ 3.0 ":

 "codeception/codeception": "^3.0" 

Conclusão


Obrigado a todos que estiveram conosco todos esses anos e que ajudaram a melhorar a codecepção todos os dias. Mais uma vez, obrigado a Naktibalda por cuidar de versões menores e criar uma ponte de compatibilidade.

Agradecimentos a Otto Kekäläinen, do Seravo, pela generosa doação.

E algumas palavras de Mikhail Bodnarchuk, que começou a Codeception há 8 anos:

Como uma pessoa interessada em qualidade e testes, eu estava interessado em responder à pergunta: o que precisa ser verificado primeiro. E a melhor resposta que encontrei é obter essas informações nos comentários dos usuários. Às vezes, um erro pode ser encontrado apenas por um usuário normal sem causar um rastreamento de pilha. E o que eu gostaria de ver é que os usuários de um site ou aplicativo da Web podem enviar imediatamente essas mensagens de erro. Por isso, criei o Bugira Bugtracker , meu novo produto SaaS, para receber relatórios de erros dos usuários. Se você gosta dos meus projetos, como Codeception ou CodeceptJS, tente o Bugira. Isso ajudará você a estabelecer uma melhor comunicação com seus usuários e criar produtos melhores!

Versão completa do changelog 3.0
Documentação atualizada

Source: https://habr.com/ru/post/pt456140/


All Articles