Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lições que o Chai pode te Ensinar

Lições que o Chai pode te Ensinar

Lucas Fernandes da Costa

June 04, 2016
Tweet

More Decks by Lucas Fernandes da Costa

Other Decks in Programming

Transcript

  1. Lições que o Chai
    pode te Ensinar
    Lucas Fernandes da Costa

    View Slide

  2. O QUE É CHAI?
    Antes de qualquer coisa…
    * Quem usa

    View Slide

  3. Chai é uma library de
    assertions para o Node
    • API fluida e flexível
    • Escrita muito próxima do
    inglês
    • Extensível
    • Sem dependências externas
    chaijs.com * Falar do chaining

    * Suporte à plugins/extensões

    * Dependências são todas nossas

    View Slide

  4. Alguns números
    * Lembrar de falar da licença

    * Último domingo 180 clones

    * 4.0.0 vindo

    View Slide

  5. GETTING INVOLVED

    View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. Algumas páginas depois…

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. O QUE EU APRENDI

    View Slide

  17. SOBRE COMO COMEÇAR

    View Slide

  18. Código não é tudo, mas é bem
    legal
    • Documentação é tão importante quanto código
    • Responda issues
    • Leia Pull Requests
    * Maior parte do tempo eu respondo e
    reviso em vez de codar

    * Responder dúvidas dos outros
    usuários e dar dicas

    View Slide

  19. Você já sabe o suficiente, você
    só precisa entender o código
    • Entenda o software antes de tentar entender o código
    • Não tente entender tudo de uma só vez
    • Resolva um problema e, na dúvida, pergunte
    * Entenda o core

    * Deixe outras utilidades pra depois

    View Slide

  20. Fique atento ao contexto
    • Leia as referências
    • Veja o histórico (gitk)
    • Use a caixa de busca
    * Uma issue pode travar a outra

    * Ver no histórico referências a issues
    ou PRs

    View Slide

  21. SOBRE AJUDAR A TE
    AJUDAREM

    View Slide

  22. Seja amigável e acessível
    • Nada é óbvio
    • Comece suas respostas agradecendo
    • Código não é pessoal
    • Use esse emoji
    :smile:
    Um bom tom motiva as pessoas a continuarem contribuindo
    * Vários canais de comunicação (Slack,
    IRC, Email)

    * O foco é conseguir mais
    contribuidores e levar o projeto pra
    frente

    View Slide

  23. Seja o mais informativo
    possível
    • Não diga apenas o que deve ser feito, diga como fazer
    • Compartilhe links (Artigos, MDN…)
    • Faça referências (issues parecidas, PRs anteriores)
    • Escreva exemplos
    Os primeiros commits são sempre os mais difíceis
    * No começo os PRs se faziam quase
    sozinhos, orientações muito precisas

    * Exemplos de uso ajudam na hora de
    saber o escopo

    * Depois dos primeiros commits se
    entende o contexto

    View Slide

  24. Organize suas issues
    • Crie labels de acordo com:
    • A dificuldade da tarefa
    • O tipo de tarefa
    • Deixe claro quando um PR é desejado/necessário

    View Slide

  25. SOBRE FAZER CÓDIGO
    a.k.a. engenharia de software (e outras coisas mais)
    Agora começa a parte de ferramentas

    View Slide

  26. Documentação
    • Código documentado
    ajuda tanto quem utiliza
    quanto quem escreve o
    software
    • Documentação gerada a
    partir de uma só fonte
    (código) diminui a
    possibilidade de
    informações conflitantes
    • Dox + Jekyll

    View Slide

  27. Mantendo as Dependências
    Atualizadas
    Pull Requests automáticos sempre que uma dependência
    sai do range do package.json ou quebra o build

    View Slide

  28. Semantic Versioning
    Seja gentil com seus dependentes
    MAJOR.MINOR.PATCH BREAKING.FEATURE.FIX
    npm install —save lodash
    ^x.x.x é perigoso

    View Slide

  29. Code Review
    • Todos os commits são
    revisados por pelo menos
    duas outras pessoas
    • O objetivo do review é
    unicamente garantir a
    qualidade do código
    • Pratique o egoless coding

    View Slide

  30. Extensibilidade

    View Slide

  31. Extensibilidade
    • Mantém o core enxuto
    • Funcionalidades de nicho ficam encapsuladas
    em outros módulos menores
    • Eventualmente plugins transformam-se em
    features oficiais

    View Slide

  32. Cobrindo código em todas as
    plataformas
    • Browserify
    • Karma
    • SauceLabs

    View Slide

  33. Cobrindo código em todas as
    plataformas
    1. Código passa pelo browserify
    2. É instrumentado usando Istanbul
    3. Testes locais rodam no PhantomJS e node
    4. Testes remotos rodam em "todos" os browsers
    5. Resultados de todos os ambientes são mergeados
    (lcov-result-merger)
    6. Resultados são enviados para o coveralls

    View Slide

  34. Testando IE fora do Windows

    View Slide

  35. Modularização
    (no sentido mais literal da palavra)

    View Slide

  36. Usando o Chai para testar o
    Chai

    View Slide

  37. Usando o Chai para testar o
    Chai
    Já sabemos que um
    determinado resultado
    está correto, só
    queremos saber se a
    asserção sobre ele vai
    falhar ou não

    View Slide

  38. TOUR GUIADO
    +

    DICAS

    View Slide

  39. Vamos aumentar esse número

    View Slide

  40. Obrigado!
    lucasfcosta
    lfernandescosta
    [email protected]
    lucasfcosta.com

    View Slide