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

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s