Esses dias tive que realizar testes em uma página a qual exibe uma primeira lista de itens e um botão para ver mais itens. Quando o botão é pressionado, então mais um conjunto de itens são exibidos na lista, aumentando a altura do elemento o qual contém os itens da lista.
Para fins de verificar que ao clicar no botão “ver mais” a altura do elemento que contém os itens da lista aumentava, demonstrando que o botão só é exibido quando realmente há mais itens para serem exibidos, e que a lista realmente aumenta, utilizei o método webdriver.WebElement.getSize, da API do Protractor 2.1.0.
Segue abaixo o exemplo de testes criado:
it('should check that see more button works correctly', function () {
var seeMore = element(by.cssContainingText('#button', 'Ver mais'))
, mainContainer = $('#container-content')
, actualMainContainerSize = mainContainer.getSize();
seeMore.click().then(function () {
browser.driver.sleep(3000);
var postMainContainerSize = mainContainer.getSize();
expect(postMainContainerSize).not.toEqual(actualMainContainerSize);
});
});
Veja que na linha 9 faço a verificação de que o tamanho do container principal após o clique no botão “ver mais” não é igual o tamanho do mesmo container antes do clique.
O mesmo pode ser feito para verificar que após uma ação o tamanho do elemento não mudou. Veja abaixo:
expect(postMainContainerSize).toEqual(actualMainContainerSize);
O método getSize retorna um JSON. Algo como:
{
width : 1008,
height : 1754
}
Ou seja, no exemplo do teste demonstrado acima, a comparação é feita com relação ao objeto com um todo (todos os atributos são comparados), mas visto que nesta situação só a altura (height) é alterada, a verificação pode ser assim mesmo.
Veja um exemplo de um teste que falhou, pois esperava que o objeto fosse igual, mas a altura mudou:
Expected { width : 1008, height : 1754 } to equal { width : 1008, height : 1401 }.
Espero que a dica seja útil para situações semelhantes a esta.
Caso tenha ficado com alguma dúvida, deixe um comentário ou entre em contato através do email talkingabouttesting@gmail.com
