Dia 66/2019 - Nightwatch

Desafio #92daysofcode que fiz no final de 2019. Nesse artigo temos o dia 66, mostrando o uso do Nightwatch.

Código

Começamos com a estrutura do HTML.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Day 66</title>
<style>
*, *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing:border-box; }
html { -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; font-size: 62.5%; }
* { margin: 0; padding: 0; list-style: none; outline: none; }
body { background: #000; color: #fff; font-family: Arial, Helvetica, sans-serif; }

.container { margin: 20px auto; max-width: 992px; width: 100%; }

.title { font-size: 5rem; }
</style>
</head>
<body>
<div class="container">
<!-- form -->
</div>
<script src="./day-66.js"></script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form class="form">
<p class="form-group">
<label class="form-label">Usuário</label>
<input class="form-field" name="username" type="text">
</p>
<p class="form-group">
<label class="form-label">Password</label>
<input class="form-field" name="password" type="password">
</p>
<p><button class="form-submit" type="submit">Entrar</button></p>
</form>
<script>
document.querySelector('form').addEventListener("submit", evt => {
const form = document.forms[0];
const username = form.querySelector('input[name="username"]').value;
const password = form.querySelector('input[name="password"]').value;

if (username === 'admin' && password === 'admin') {
document.querySelector('.container').innerHTML = `<h1 class="title">Olá</h1>`;
}
});
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
"src_folders": ["e2e/tests"],
"output_folder": "reports",
"custom_commands_path": "e2e/commands",
"custom_assertions_path": "e2e/assertions",
"page_objects_path": "e2e/pages",
"globals_path": "e2e/global.js",

"selenium": {
"start_process": true,
"server_path": "./node_modules/selenium-standalone/.selenium/selenium-server/3.141.5-server.jar",
"log_path": "./reports",
"host": "127.0.0.1",
"port": 4444,
"cli_args": {
"webdriver.chrome.driver": "./node_modules/selenium-standalone/.selenium/chromedriver/2.43-x64-chromedriver"
}
},
"test_settings": {
"default": {
"launch_url": "http://localhost:3000",
"selenium_port": 4444,
"selenium_host": "localhost",
"silent": true,
"screenshots": {
"enabled": false,
"path": ""
},
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const loginCommands = {
login(username, pass) {
return this
.waitForElementVisible('@usernameInput', 5000)
.setValue('@usernameInput', username)
.setValue('@passInput', pass)
.waitForElementVisible('@loginButton', 1000)
.click('@loginButton')
.pause(1000)
.waitForElementVisible('@alert')
.assert.containsText('@alert', 'Olá')
.end();
}
};

module.exports = {
url: 'http://localhost:3000',
commands: [loginCommands],
elements: {
usernameInput: {
selector: 'input[type=text]'
},
passInput: {
selector: 'input[name=password]'
},
loginButton: {
selector: 'button[type=submit]'
},
alert: {
selector: '.title'
}
}
};
1
2
3
4
5
6
7
8
9
10
11
module.exports = {
'Login': (client) => {
const loginPage = client.page.loginPage();

loginPage
.navigate()
.login(process.env.USERNAME, process.env.PASSWORD)

client.end();
}
};

Conclusão

A postagem original pode ser vista no meu Instagram e o código está acessível no meu Github.

Relacionados

Ao fechar este aviso ou continuar navegando no site Nerd Calistênico, você aceita o uso de cookies.

Este site usa cookies para assegurar a melhor experiência para os nossos usuários. Consulte nossa política de privacidade.

Uma nova versão está disponível. Clique aqui para atualizar.