Rick & Morty Search

Data: 29/05/2023

Sobre o projeto

Um projeto de estudo de uma aplicação web SPA com design criado por mim no figma, feito em Vue.js 3 com Typescript, Pinia, Tailwind CSS, componentes Vuetify e testes com Vitest, que integra uma API GraphQL gratuita do desenho Rick and Morty, e usa a ferramenta Vite.

Tem como proposta ser um site que pode ser utilizado por artistas ou curiosos para conhecer sobre o desenho, permitindo buscar personagens por nome, ou por categoria, e até se surpreender com personagens gerados aleatoriamente.

Design do projeto

Não sou designer, mas para aprender sobre UX e UI, elaborei todo o design desse projeto utilizando-se de técnicas de UX (User Experience) para definir as funcionalidades da página, e de padrões de UI (User Interface), seguindo o processo relatado a seguir.

Primeiro foi definido o problema do projeto "encontrar personagens do rick and morty para relembrar e se divertir com os amigos", depois de compreendido que já haviam soluções semelhantes ao projeto, efetuei uma pesquisa por referências para encontrar abordagens que poderiam ser utilizadas.

A partir daí pensei no conceito da solução, e defini que ela surgiu para facilitar a vida de quem precisa encontrar tipos de personagens do rick and morty, seja para desenhar, para desenvolver jogos do tema, ou simplesmente relembrar. E a sua característica seria possuir filtros e campo de busca que permitisse encontrar qualquer personagem do desenho.

Então realizei uma análise da jornada do usuário no projeto, entendendo as ações que o usuário poderia tomar na página para atingir o seu objetivo e os desafios que eles poderiam enfrentar para facilitar a definição do projeto. Desse entendimento criei um fluxograma da jornada do usuário na prática, pensando em todo fluxo de páginas e em como o usuário poderia interagir com cada funcionalidade da aplicação web.

Com tudo planejado fui em busca dos Patterns UI para esse tipo de aplicação, e selecionei para me inspirar os padrões Search Filters e Pagination, utilizados no projeto.

Utilizei o Figma para criar um Wireframe com a estrutura desejada das telas do projeto, que pode ser encontrado no seguinte link: https://www.figma.com/file/cFaySLUCis6RnxRBKQ4XPX/Rick%26Morty-Search?type=design&node-id=0%3A1&t=Svc4zBz2MufhJL6z-1

O que aprendi com o projeto?

Neste projeto testei técnicas de desenvolvimento com BDD (Behavior Driven Development) no front-end, aprendi a pré-configurar um guia de estilo padrão com o Tailwind CSS, aprendi a usar o Pinia com testes Vitest, utilizei pela primeira vez a biblioteca Vuetify para os componentes e aprendi a criar queries GraphQL para integração com a API.

Diante dessa experiência de estudo cheguei a algumas conclusões sobre os tópicos citados, que foram compilados nas abas a seguir.

Apesar do BDD ser uma técnica de desenvolvimento que envolve outros membros como QAs, POs entre outros, e este projeto ser criado apenas por mim para estudo, criei todos os cenários de testes com notação Gherkin, de forma a adquirir habilidades de traduzir as funcionalidades criadas por mim para uma linguagem simples que possibilite a compreensão de qualquer envolvido no projeto e para treinar minha capacidade de desenvolver orientado a comportamento, no fluxo de criar o teste para falhar, desenvolver a funcionalidade para passar e refatorar o teste.

Com essa experiência pude perceber que criar os testes para interfaces antes delas estarem efetivamente desenvolvidas, pode ser tornar complexo, principalmente ao utilizar uma biblioteca de componentes como o Vuetify. Por isso é necessário que haja algum conhecimento prévio do funcionamento da biblioteca utilizada para que se tenha um desenvolvimento mais eficiente.

Em compensação, testes de unidade são os que lidam melhor com o BDD, pois testar uma função é mais fácil e mais eficiente do que testar como e quais dados serão exibidos na tela. Os testes de componentes Vue, podem ser considerados de integração, e por isso são mais difíceis de criar sem uma base desenvolvida em código.

Para interfaces o ideal é ir testando se os seletores esperados contém o conteúdo que deveria, como um título da página, ou a ação de botões, mas usando uma biblioteca de componentes o teste pode mudar e validar se o componente possui a propriedade esperada para exibição do título, por exemplo.

Mas no geral os testes escritos com notação Gherkin ficam mais fáceis de serem compreendidos, o que facilita a manutenção e refatoração durante o processo de desenvolvimento, isto é muito positivo e com a prática fica cada vez mais fácil descrever a funcionalidade conforme seu comportamento. Apesar de que alguns tipos de testes não façam tanto sentido possuir toda uma descrição do formato Gherkin, ainda sim é positivo escrevê-los assim, pois irá garantir que o teste cubra sempre aquele exato cenário.

Atualizado