Cannot read property ‘platform’ of undefined

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.

visualreview-protractor.js

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:

Screen Shot 2016-06-02 at 8.39.51 PM

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.

Deixe um comentário