Resolução de problemas com Visual Review e Protractor
Há algum tempo eu não trabalhava com o Protractor integrado ao Visual Review, e após algum tempo, quando voltei a integrar as ferramentas, me deparei com o seguinte erro ao executar meus testes, após configurados para tal integração:
Cannot read property 'platform' of undefined
Procurei na internet pelo exato erro e não encontrei nada relacionado, portanto, após a resolução do problema, resolvi divulgar aqui a solução, para ajudar quem venha a passar por isso também.
Primeiro, procurei em todo meu projeto pela tal platform e nada encontrei.
Então, resolvi dar uma olhada no node module do VisualReview-protractor. Lá, no arquivo visualreview-protractor.js encontrei a tal platform.
Minha primeira abordagem, após encontrar a platform foi verificar o retorno de capabilities.
console.log(capabilities);
E o retorno, foi o seguinte:
Capabilities { 'acceptSslCerts' => true, 'applicationCacheEnabled' => false, 'browserConnectionEnabled' => false, 'browserName' => 'chrome', 'chrome' => { chromedriverVersion: '2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4)', userDataDir: '/var/folders/dx/nv38lwrs4xjdb8tnqzpfz0840000gn/T/.org.chromium.Chromium.VUtHtc' }, 'cssSelectorsEnabled' => true, 'databaseEnabled' => false, 'handlesAlerts' => true, 'hasTouchScreen' => false, 'javascriptEnabled' => true, 'locationContextEnabled' => true, 'mobileEmulationEnabled' => false, 'nativeEvents' => true, 'platform' => 'Mac OS X', 'rotatable' => false, 'takesHeapSnapshot' => true, 'takesScreenshot' => true, 'version' => '51.0.2704.79', 'webStorageEnabled' => true }
Veja que a platform estava lá, mas não em uma estrutura capabilities.caps_.platform, mas sim na estrutura capabilities.platform.
Daí foi a vez de analisar a documentação da ferramenta, que mostrava o seguinte:
Com isso, ficou fácil de entender o que faltava.
Foi só mudar meu arquivo de configuração do Protractor, de:
const VisualReview = require('visualreview-protractor'); var vr = new VisualReview({ hostname: 'localhost', port: 7000 });
Para:
const VisualReview = require('visualreview-protractor'); var vr = new VisualReview({ hostname: 'localhost', port: 7000, propertiesFn: function (capabilities) { return { 'os': capabilities.platform, 'browser': capabilities.browserName, 'version': capabilities.version }; } });
Com isto meus testes e2e voltaram a funcionar, integrados ao Visual Review.
Obs.: Este problema foi percebido em um ambiente com as seguintes configurações:
Chrome Version 51.0.2704.79 (64-bit) Protractor Version 3.3.0 Visual Review v0.1.3 Visual review-protractor "^0.2.0"
E você, tem alguma experiência legal sobre seus experimentos entre o Protractor e o Visual Review? Conta aí!
Ficou interessado? Veja aqui o que já escrevi sobre o assunto e aqui um video demonstrando com a mão na massa como isso funciona.
Veja também este post em sua versão em Inglês no Medium.