-
Node.js e NPM - Node.js como ambiente de execução para criar e executar aplicações em Javascript. E o NPM para: instalação de pacotes, gerenciamento de versões e dependências.
-
Yarn - para instalação de pacotes, gerenciamento de versões e dependências.
-
PostgreSQL na nuvem - utilizamos o Elephantsql como serviço de banco de dados PostgreSQL na nuvem para armazenar os dados da aplicação que vamos testar.
- Clique aqui para acessar a página de planos do ElephanSQL e clique no botão Try now for FREE.
- Recomendamos fazer o login com a conta do Github, desta forma, clique no texto Sign in with GitHub.
- No step 1, preencha o campo
Name
com SamuraiBS-Dev, selecione Tiny Turtle (Free) na caixa de seleçãoPlan
e clique no botão Select Region.
- No step 2, selecione US-East-1 (Northern Virginia) na caixa de seleção
Data center
e clique no botão Review.
- No último passo, revise os dados e clique no botão Create Instance.
- Clique no link da instância criada (SamuraiBS-Dev), para visualizar seus detalhes.
- A seguir iremos copiar as informações do banco de dados, tanto para o projeto da API como para o projeto de testes.
- Renomeie o arquivo
samurai-barber-shop/tests/.env.sample
para.env
; - Na instância do SamuraiBS-Dev copie o valor do campo
Server
e cole na variávelPOSTGRES_HOST
dos arquivos:samurai-barber-shop/apps/api/.env
esamurai-barber-shop/tests/.env
; - Na instância do SamuraiBS-Dev copie o valor do campo
User & Default database
e cole nas variáveisPOSTGRES_USER
ePOSTGRES_NAME
dos arquivos:samuraibs/apps/api/.env
esamurai-barber-shop/tests/.env
; - Na instância do SamuraiBS-Dev copie o valor do campo
Password
e cole na variávelPOSTGRES_PASS
dos arquivos:samurai-barber-shop/apps/api/.env
esamurai-barber-shop/tests/.env
;
- Pelo terminal, navegue até a pasta
samurai-barber-shop/tests
e execute o comandoyarn test
, para abrir a guia do Cypress e por ela executar os testes.
-
PERGUNTA RESPOSTA question name (tests): samuraibs-tests question version (1.0.0): Tecle Enter para manter 1.0.0 question description: Projeto de testes de aceitação E2E em Cypress question entry point (index.js): Tecle Enter para manter index.js question repository url: Tecle Enter question author: Seu nome e sobrenome question license (MIT): Tecle Enter question private: Tecle Enter -
Cypress - como ferramenta de teste.
-
- Pelo terminal, navegue até a pasta
samurai-barber-shop/tests
e execute o comandoyarn add cypress -D
para instalar as dependências do Cypress na versão mais recente. - Em seguida, na pasta
samurai-barber-shop/tests
execute o comandonpx cypress open
. - Por fim, na pasta
samurai-barber-shop/tests
execute o comandorm -r cypress/integration/**
, para remover pastas e arquivos criados por padrão pelo Cypress dentro da pastacypress/integration
- Pelo terminal, navegue até a pasta
-
-
-
Navegue até a pasta
samurai-barber-shop/tests
do projeto samurai-barber-shop, execute o comandoyarn add eslint -D
para instalar o eslint como uma dependência de desenvolvimento do projeto. -
Navegue até a pasta
samurai-barber-shop/tests
do projeto samurai-barber-shop, execute o comandonode_modules/.bin/eslint --init
abaixo para configurar o eslint, em seguida responda as seguintes perguntas abaixo, conforme respostas exibidas:PERGUNTA RESPOSTA How would you like to use ESLint? To check syntax, find problems, and enforce code style What type of modules does your project use? CommonJS (require/exports) Which framework does your project use? None of these Does your project use TypeScript? No Where does your code run? Node (press <a>
to toggle all)How would you like to define a style for your project? Use a popular style guide Which style guide do you want to follow? Airbnb: http://github.com/airbnb/javascript What format do you want your config file to be in? JSON Would you like to install them now with npm? Yes -
Execute o comando
yarn add eslint-plugin-cypress -D
para instalar o eslint específico para o Cypress no projeto. -
No arquivo
.eslintrc.json
adicione as seguintes chaves:- Dentro da chave
env
, adicione mais uma para definir o plugin do Cypress como global:"env": { "browser": true, "commonjs": true, "es2021": true, "node": true, "cypress/globals": true }
- Adicione à chave de plugins o valor do Cypress:
"plugins": [ "cypress" ]
- Dentro da chave
-
Por fim, no arquivo
package.json
, adicione na chavescripts
, os novo scripts:-
"check-lint": "eslint cypress/integration/**"
. Assim, quando for executado na raiz do projeto o comandoyarn check-lint
, serão verificados todos os arquivos dentro da pasta cypress/integration pelo eslint. -
"fix-lint": "eslint cypress/integration/** --fix"
. Desta forma, quando for executado na raiz do projeto o comandoyarn fix-lint
, serão corrigidas as infrações que o eslint considera como autocorrigível de acordo com o guide Airbnb que foi configurado anteriomente.
-
-
-
Eslint plugin - Plugin do eslint para o VSCode.
-
Husky - Para realização de tarefas antes do commit, por exemplo: varredura do lint e execução dos testes.
-
-
Execute o comando
yarn add husky@7.0.4 -D
para instalar as dependências do Husky no ambiente de desenvolvimento, na versão 7.0.4 sem atualização automática no futuro. -
No arquivo
package.json
dentro da chavescript
adicione a chave"prepare": "husky install"
-
Agora, execute os comandos abaixo os quais irão realizar as seguintes tarefas:
- Exeutar o script
prepare
para ativar o hook no git - Criar o arquivo
pre-commit
, no qual serão gravadas pelo Husky as tarefas a serem realizadas antes do commit.yarn prepare && yarn husky add .husky/pre-commit "yarn check-lint" && git add .husky/pre-commit
- Exeutar o script
-
-
-
Faker - para geração de dados fictícios para teste.
-
- Execute o comando
yarn add @faker-js/faker -D
para instalar as dependências do Faker na versão mais recente.
- Execute o comando
-
-
Pg - cliente para acessar o banco postgres da API via node.
-
- Execute o comando
yarn add pg -D
para instalar as dependências do Postgresql na versão mais recente.
- Execute o comando
-
-
Moment - biblioteca utilizada para formatar datas em JavaScript.
-
- Execute o comando
yarn add moment -D
para instalar as dependências do Moment na versão mais recente.
- Execute o comando
-
-
Moment Business Day - biblioteca utilizada para verificar os dias úteis da semana.
-
- Execute o comando
yarn add moment-business-days -D
para instalar as dependências do Moment Business Day na versão mais recente.
- Execute o comando
-
-
Underscore - biblioteca que entre suas várias funcionalidades, aqui ela é utilizada para sortear valor(es) aleatório(s) em uma lista.
-
- Execute o comando
yarn add underscore -D
para instalar as dependências do Underscore na versão mais recente.
- Execute o comando
-