An open API service indexing awesome lists of open source software.

https://github.com/azanniel/iweather

🧪 O IWeather é uma aplicação que mostra as informações do clima dado uma cidade que é informada à ele. A finalidade dessa aplicação é aplicar os conceitos de testes e CI/CD.
https://github.com/azanniel/iweather

dayjs expo expo-router jest nativewind react-native-testing-library

Last synced: 3 months ago
JSON representation

🧪 O IWeather é uma aplicação que mostra as informações do clima dado uma cidade que é informada à ele. A finalidade dessa aplicação é aplicar os conceitos de testes e CI/CD.

Awesome Lists containing this project

README

        



🌦️ IWeather

> O IWeather é uma aplicação que mostra as informações do clima dado uma cidade que é informada à ele. A finalidade dessa aplicação é aplicar os conceitos de testes e CI/CD.

![image](https://github.com/Azanniel/iweather/assets/71537090/f992a9a0-3c8a-43b5-bfa7-86da4344bb6d)

## 🎮 Techs Relevantes

- [Expo Router](https://docs.expo.dev/routing/introduction/): Expo Router é um roteador baseado em arquivo para React Native e aplicativos da web.
- [Tailwindcss](https://tailwindcss.com/): Uma estrutura CSS utilitária repleta de classes.
- [NativeWind](https://www.nativewind.dev/): NativeWind usa Tailwind CSS como linguagem de script para criar um sistema de estilo universal para React Native.
- [Jest](https://jestjs.io/pt-BR/): Jest é um poderoso Framework de Testes em JavaScript com um foco na simplicidade.
- [React Native Testing Library](https://callstack.github.io/react-native-testing-library/): React Native Testing Library é uma biblioteca de testes para React Native.
- [DayJS](https://jestjs.io/pt-BR/): Day.js é uma biblioteca JavaScript minimalista que analisa, valida, manipula e exibe datas e horas para navegadores modernos.

## 🃏 Layout

Caso tenha interesse em visualizar o Layout temos o [link do figma](https://www.figma.com/file/Ha378XWXLjZkPAShI7oV5S/iWeather-%E2%80%A2-Projeto-React-Native?type=design&node-id=0%3A1&mode=design&t=wGIQ3FianuiOCRKH-1).

## 📝 Projeto

Nesse projeto foi trabalhado uma aplicação de clima utilizando o React Native.
O principal objetivo com isso foi aplicar os conceitos de testes e CI/CD.

O primeiro aprendizado foi relacionado ao teste unitário e ao uso do [Jest](https://jestjs.io/pt-BR/) onde foi entendido que o teste unitário é o mais eficiente e busca testar uma unidade de código.

O próximo aprendizado foi em relação ao teste de componentes e foi aplicado o [React Native Testing Library](https://callstack.github.io/react-native-testing-library/) onde pode-se renderizar componentes de forma isolada e testar uma pequena parte deles com isso garantindo o funcionamento isolado do componente.

O Mock permite substituir um objeto real e criar uma simulação durante a execução dos testes. É usado para isolar um código que está sendo testado fornecendo um comportamento predefinido e para não depender de fatores externos.

Na parte de testes de Hooks conhecemos as funções `waitFor` e `act` que são responsáveis por conseguirmos aguardar a atualização de estado de um contexto quando estamos testando nosso hook.

Por fim, finalizamos o aprendizado com o coverage report que é um relatório que fornece informações sobre a cobertura do nosso código pelos testes. Ele mostra a porcentagem de linhas de código, funções, instruções ou ramificações que foram executadas durante a execução dos testes. O objetivo dele é avaliar o quanto do código esta sendo testado pelos testes automatizados.

## 🧑‍💻 CI & CD

O CI é uma prática de desenvolvimento em que as alterações de código são integradas regularmente a um repositório principal. É executado testes para garantir que o novo código não quebre a aplicação existente. Já o CD automatiza o processo de implantação da aplicação, entregando novas funcionalidades ou correções de bugs aos usuários de forma rápida e confiável. O CI mantém a estabilidade do código, enquanto o CD automatiza a implementação e implantação do software em produção.

O GitHub Actions é uma plataforma de integração contínua e entrega contínua (CI/CD). Com o GitHub Actions, podemos automatizar a compilação, testes e implantação de nossa aplicação. Podemos criar e gerenciar fluxos de trabalho a partir de eventos, como um push em um repositório. Para criar esse fluxo de trabalho, usamos um arquivo YAML, onde configuramos os steps e definimos o que deve ser feito

## ☕ Contatos

Você vai me encontrar em qualquer uma das redes sociais abaixo: