💼 | Minha solução para o desafio técnico da vaga de Javascript Developer na Lesser.
O Desafio Tecnico da Lesser consiste em criar um site que exibe um formulário com campos para "Nome", "Telefone" e "Email". O usuário deve preencher o formulário e enviá-lo dentro de um limite de 15 segundos. O site deve exibir um contador regressivo e modais de sucesso ou falha, dependendo do tempo de envio. Além disso, o site deve incluir uma página de candidato que exibe os dados preenchidos, com navegação entre as páginas sem interromper a contagem do tempo.
Foi a minha primeira vez usando Svelte & Playwright! :) A minha solução foi criar uma interface mais intuitiva e alinhada ao propósito da empresa de reconectar as pessoas com atividades que nutrem o espírito. Para isso, adaptei o desafio para um contexto imersivo: o usuário assume o papel de um cadete prestes a embarcar em uma expedição intergaláctica. Ele tem 15 segundos para registrar sua identidade no sistema da nave Lesser-X. Se preencher os dados corretamente a tempo, a nave decola com ele a bordo; caso contrário, a decolagem ocorre da mesma forma — mas sem o cadete. Foi necessário ajustar esse contexto ao enunciado do desafio sem desrespeitar as regras estabelecidas.
Uma das escolhas técnicas que fiz foi utilizar o BEM para nomenclatura de algumas classes de estilização e usar emojis como ilustração para representar elementos gráficos na interface, em vez de imagens tradicionais. Isso permitiu trabalhar com elementos ilustrativos sem aumentar o peso do projeto, mantendo a performance otimizada.
Também tive a oportunidade de escrever testes E2E usando Playwright, o que foi um desafio tão difícil quanto divertido. A cada novo cenário testado, surgia a vontade de cobrir ainda mais possibilidades, e esse processo acabou revelando problemas no fluxo de interação do site que antes passavam despercebidos. Isso demandou mais tempo do que o esperado, mas aprimorou a resolução e a prevenção de problemas.
Além disso, enfrentei desafios técnicos durante o desenvolvimento, como o próprio Svelte sinalizando erros por não reconhecer o svelteHTML, e problemas com a nova atualização do Tailwind — um problema que nem as IAs conseguiram me ajudar a resolver (haha). Acabei tendo que usar apenas CSS para estilizar alguns trechos, pois incluir esses elementos na configuração do Tailwind estava causando bugs no projeto. Outro desafio foi o Modal, que entrava em conflito com alguns avisos de acessibilidade. Tive que fazer ajustes para que ele funcionasse corretamente com os elementos solicitados no desafio. Isso me levou a horas de debugging, pesquisas em issues no GitHub do framework e diversos testes envolvendo a instalação e remoção de pacotes no package.json. No entanto, apesar das dificuldades, foi uma experiência enriquecedora. Sem experiência prévia com Svelte, precisei aprender na prática, equilibrando a leitura da documentação com tentativa e erro — o que tornou o aprendizado ainda mais valioso. Gostaria de ter mais tempo na minha rotina para implementar novas funcionalidades e aplicar uma organização melhor ao projeto, mas estou satisfeita com o resultado (ainda que passível de melhorias). Obrigada pela experiencia!
mm:ss
.my-app/
├── src/
│ ├── components/ # Componentes usados durante o desenvolvimento (timer, modal, header etc)
│ ├── stores/ # Gerenciamento de estado (tempo e dados do candidato)
│ ├── routes/
│ │ ├── +page.svelte # Página principal com o formulário
│ │ ├── candidate/
│ │ │ └── +page.svelte # Página do candidato
│ │ └── +layout.svelte # Layout comum para as páginas
│ └── app.html # Template HTML base
├── tests/
│ └── browser.spec.ts # Testes end-to-end com Playwright
├── playwright.config.ts # Configuração do Playwright
├── tailwind.config.cjs # Configuração do TailwindCSS
❗️ | Certifique-se de ter as seguintes ferramentas instaladas em sua máquina antes de prosseguir:
git clone https://github.com/mewmewdevart/LesserFormCountdown.git
cd LesserFormCountdown
pnpm install
pnpm run dev
http://localhost:5173
.https://github.com/user-attachments/assets/9e7b9eaf-42ed-4c67-a8db-c4dcb736bd8b
Para garantir que todas as funcionalidades estão funcionando corretamente, execute os testes com Playwright:
npx playwright test browser.spec.ts
Os testes cobrem todos os cenários críticos do projeto, garantindo que a aplicação funcione conforme o esperado. Abaixo estão os principais cenários testados:
X
) ou fora da modal.Este projeto está licenciado sob a MIT License.
Desenvolvido com muito ☕ por Larissa Cristina Benedito