This commit is contained in:
Julien Palard 2018-12-05 12:33:01 +01:00
parent 1c96628267
commit 1a0bb71533
1 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,49 @@
status: hidden
title: Python — Weblint
slug: EiN8shae-weblint
robots: noindex
# Web Linter
Développez un programme, s'utilisant dans un shell uniquement (pas
d'interface graphique, pas d'interface web, pas de curses, que du text
dans un émulateur de terminal) prenant une (ou plusieurs) URL en
paramètre et effectuant une batterie de tests dessus, l'idée est de
pouvoir l'utiliser dans une CI comme un jslint, csslint, des tests
unitaires, etc... ou comme outil de monitoring branché sur un nagios
like.
Le projet s'appelle
[weblint](https://mdk.fr/pages/obiree2uaza2sh-rendu.html).
Les tests à implémenter sont libres, le nombre de tests, la variété
des tests, et la qualité de l'implémentation feront partie de la
note. Voici quelques idées de tests pour vous inspirer :
- Cohérence des headers (encoding pareil que dans la meta et que dans
la page, content type existant) (langue du contenu identique à la
langue annoncée,...), Vérifier que la page est bien envoyée compressée
si le client le gère, ...
- Headers à jour : CSP, x-frame-options etc...
- Vérification orthographique
- Vérification grammaticales
- Temps de réponse
- Présence de 404
- Présence de liens HTTP alors qu'en face y'a du HTTPS
- Si présence de flux RSS / Atom : vérifier leur contenu, content types, ...
- Si présence de CSS / JS externes vérification de leur headers, temps
de réponse, contenu, minification
- Si c'est une Home page, vérifier aussi le robots.txt, le
security.txt, ...
- Si c'est du HTTPS vérifier aussi si c'est bien fait (expiration pas
trop proche,...).
- Si y'a du AMP vérifier via amphtml-validator.
Les erreurs devront être remontées dans un format simple et lisible,
une erreur par ligne, aucune ligne ne doit être autre chose qu'une
erreur, inspirez vous de pylint, flake8, gcc, php -l, etc…
Vous pouvez implémenter une option "--verbose" et "-v" pour rajouter
des informations, éventuellement "-vv" pour rajouter du débug
(n'hésitez pas à utiliser les bibliothèque standard logging et
argparse).