Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a...

36
Feito em.. Usa.. e usa.. para testes em..

Transcript of Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a...

Page 1: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Feito em..

Usa..

e usa..

para testes em..

Page 2: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Faz como um usuário faria

Page 3: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Dê adeus ao checklist manual

Page 4: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Hello Word, a hora da ação!baixe nesse link ~> goo.gl/IbUUwv

Page 5: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Passo a passo

Page 6: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

- Baixe o NodeJS ~> https://nodejs.org/download/

- $ npm install -g protractor

- $ npm install

- $ npm run update-webdriver

- $ npm start

- $ npm test

Page 7: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

2 tests, 1 assertion, 0 failures

Deu certo? Ótimo!

Page 8: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Entendendo o protractor.conf

Page 9: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

exports.config = {

specs: [

'./tests/test.js',

],

capabilities: {

'browserName': 'chrome'

},

baseUrl: 'http://localhost:8888/',

framework: 'jasmine',

jasmineNodeOpts: {

showColors: false,

isVerbose: true,

includeStackTrace: true

},

directConnect: true,

onPrepare: function() {

browser.manage().window().maximize();

}

};

Navegador onde os testes serão rodados

A url base a ser testada

Framework que serão utilizados para escrever os testes

Opções do Jasmine

Conecta direto ao webdriver

O que fazer antes de começar

Arquivos de testes, carregados nessa ordem

Page 10: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Entendendo o test/test.js

Page 11: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

describe('Meu primeiro teste usando Protractor', function() {

it('Acessando aplicação', function() {

browser.get('http://localhost:8888/');

});

it('Escrevendo no input', function() {

var name = 'o meu nome é Teste, obrigado por me usar...';

var elementName = element(by.model('yourName'));

var elementResponse = element(by.css('h1'));

elementName.sendKeys(name);

browser.sleep(2000); // essa linha não é necessária, serve apenas para que você veja a mágica acontecendo

expect(elementResponse.getText()).toEqual('Hello ' + name + '!');

});

});

Descrição do conjunto de testes (suite)

Acessa a URL da aplicação

Teste..

Page 12: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Encontrando um elemento

Page 13: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

by.css('.minhaclasse')

<div id="meuid"> <span class="minhaclasse"></span> </div>

element(by.css('.minhaclasse'));

element(by.css('#meuid .minhaclasse'));

Page 14: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

by.css('[ng-click="funcao"()]')

<a href="#" ng-click="funcao()">botão</a>

element(by.css('[ng-click="funcao()"]'));

Page 15: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

by.id('meuid')

<div id="meuid"></div>

element(by.id('meuid'));

element.all(by.id('meuid')).get(0);

Page 16: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

by.model('meumodelo')

<input type="text" ng-model="meumodelo" />

element(by.model('meumodelo'));

element.all(by.model('meumodelo')).first();

Page 17: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

by.binding('meubind')

<input type="text" binding="meubind" />

element(by.bind('meubind'));

element.all(by.bind('meubind')).last();

Page 18: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Promisse

var el = element(locator);

el.getText().then(function(text) {

console.log(text);

});

var el = element(locator);

el.isPresent().then(function(is) {

console.log(is);

});

Page 19: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Expect

Page 20: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

.toEqual()

expect(browser.getTitle()).toEqual('CICAT');

Page 21: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

.toBe()

expect(items[0].getText()).toBe('First');

Page 22: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Debugando

Page 23: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

browser.pause()Para tudo e você decide quando voltar

Page 24: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

ddescribe() & iit()Rodando apenas os testes que você quer...

Page 25: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

console.log()Simples, bom e velho log

Page 26: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Gravando a saída num .txt$ npm test > saida.txt

Page 27: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Timeouts

Page 28: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Esperando a página carregar

Padrão: 10000msModificando..

No seu protractor.conf adicione a seguinte linha:

getPageTimeout: tempo_em_ms

Page 29: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Esperando a página sincronizarPadrão: 11000ms

Modificando..

No seu protractor.conf adicione a seguinte linha:

allScriptsTimeout: tempo_em_ms

Page 30: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Esperando o AngularJS

Padrão: 10000msModificando..

No seu protractor.conf adicione a seguinte linha:

getPageTimeout: tempo_em_ms

Page 31: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Esperando um teste acabar

Padrão: 30000msModificando..

No seu protractor.conf adicione a seguinte linha:

jasmineNodeOpts: {defaultTimeoutInterval: timeout_in_millis}

Page 32: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Esperando um teste acabar

Padrão: 30000msModificando #2..

No seu test.js adicione a seguinte linha:

it('Descrição', testFn, timeout_in_millis)

Page 33: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Salvando resultados (.xml)

Page 34: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

No seu protractor.conf, no parâmetro onPrepare, adicione o seguinte trecho: onPrepare: function() { [...] require('jasmine-reporters'); jasmine.getEnv().addReporter( new jasmine.JUnitXmlReporter('./reports', true, true, 'TEST-PREPEND-') ); }

Diretório onde serão salvos os XMLs

Os reports serão consolidados pelo describe

Texto adicionado antes do nome do XML

Page 35: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Agora é com vocês...baixe nesse link ~> http://goo.gl/hN0ADc

Page 36: Usa.. para testes em.. Feito em.. e usa.. · Navegador onde os testes serão rodados A url base a ser testada Framework que serão utilizados para escrever os testes Opções do Jasmine

Pronto :)Obrigado a todos, vocês foram muito gentis!