From 49be5ff8a48c21b21d4537ba1d8869573dfc64c2 Mon Sep 17 00:00:00 2001 From: marlou Date: Tue, 28 Nov 2023 11:08:03 +0100 Subject: [PATCH] divers - IA (#79) --- content/.vuepress/sidebar-config/divers.js | 8 +++ content/divers/ia/ia.md | 55 +++++++++++++++++++ docs/404.html | 6 +- docs/assets/js/100.6a2b43d6.js | 1 + .../js/{100.44086804.js => 101.c2c7bbe7.js} | 2 +- .../js/{101.4da4f53c.js => 102.339e4904.js} | 2 +- .../js/{102.4dfbc78f.js => 103.4e268280.js} | 2 +- .../js/{103.d43d607c.js => 104.ffcb3213.js} | 2 +- .../js/{104.b58b54a2.js => 105.a210265a.js} | 2 +- .../js/{105.2bc29497.js => 106.80d54c16.js} | 2 +- .../js/{106.6e8d585c.js => 107.28111c9b.js} | 2 +- .../js/{107.a8a7ab96.js => 108.0b24b5ed.js} | 2 +- .../js/{108.a5f65961.js => 109.11ed044e.js} | 2 +- .../js/{109.96c1d046.js => 110.900b5784.js} | 2 +- .../js/{110.646b9744.js => 111.a5507ddb.js} | 2 +- .../js/{111.77988ebe.js => 112.86a20ab2.js} | 2 +- .../js/{112.eb506b42.js => 113.eaa1ff8d.js} | 2 +- .../js/{113.f4a27dd0.js => 114.32b9c5ef.js} | 2 +- .../js/{114.58dc6ed5.js => 115.fcd18b43.js} | 2 +- .../js/{115.4fcfa77e.js => 116.4ba32576.js} | 2 +- .../js/{116.63bb6bae.js => 117.21bd1631.js} | 2 +- .../js/{117.fe31afcf.js => 118.0bc76cae.js} | 2 +- .../js/{118.8972b292.js => 119.40317b0b.js} | 2 +- .../js/{119.800e09fb.js => 120.78635538.js} | 2 +- .../js/{120.fafbda22.js => 121.b8887df0.js} | 2 +- .../js/{121.ccecf498.js => 122.d2f1ca35.js} | 2 +- .../js/{122.f7b7f3cd.js => 123.06add9f5.js} | 2 +- .../js/{123.f8a9a26f.js => 124.4a82543e.js} | 2 +- .../js/{124.fca1bc4a.js => 125.49be7fd9.js} | 2 +- .../js/{125.21ff3e0b.js => 126.41a04deb.js} | 2 +- .../js/{126.973c6acd.js => 127.8e9d36e5.js} | 2 +- .../js/{127.18d4e51d.js => 128.88353661.js} | 2 +- .../js/{128.69bba1da.js => 129.a22185b5.js} | 2 +- .../js/{129.ec07156a.js => 130.3b2ecb1d.js} | 2 +- .../js/{130.48e0b608.js => 131.b951c1e9.js} | 2 +- .../js/{131.38a3297b.js => 132.0fd2b133.js} | 2 +- .../js/{132.c264f9f9.js => 133.341b1a5d.js} | 2 +- .../js/{133.b0e32f85.js => 134.923162c9.js} | 2 +- .../js/{134.da08dc69.js => 135.0ddc118f.js} | 2 +- .../js/{135.4db3caa6.js => 136.d0278d26.js} | 2 +- .../js/{136.47168706.js => 137.193f1051.js} | 2 +- .../js/{137.d8672f4f.js => 138.061ca80e.js} | 2 +- .../js/{138.a427604b.js => 139.8b0a39e7.js} | 2 +- .../js/{139.a1f2bf49.js => 140.17a92c71.js} | 2 +- .../js/{140.ddd7400a.js => 141.36b604fa.js} | 2 +- .../js/{141.91de2cfe.js => 142.38064372.js} | 2 +- .../js/{142.e6793b43.js => 143.7e318195.js} | 2 +- .../js/{143.1d1c340a.js => 144.3505939f.js} | 2 +- .../js/{144.e723c154.js => 145.c95da964.js} | 2 +- .../js/{145.8b2ab29c.js => 146.6286ba7c.js} | 2 +- .../js/{146.9969d410.js => 147.a55a1037.js} | 2 +- .../js/{147.a9168f18.js => 148.801e3771.js} | 2 +- .../js/{148.70dcc20d.js => 149.0319b27e.js} | 2 +- .../js/{149.2fa4818d.js => 150.be8582d4.js} | 2 +- .../js/{150.f73e304b.js => 151.942b5d27.js} | 2 +- .../js/{151.e14e6936.js => 152.b2b0e5e3.js} | 2 +- .../js/{152.9e7cd6ad.js => 153.39726729.js} | 2 +- .../js/{153.ffc07153.js => 154.dd143f32.js} | 2 +- .../js/{154.63a6d119.js => 155.93eca6f3.js} | 2 +- .../js/{155.98778ceb.js => 156.059cae88.js} | 2 +- .../js/{156.cc2d70ff.js => 157.795549f7.js} | 2 +- .../js/{157.41e10630.js => 158.d541f26e.js} | 2 +- .../js/{158.e9ffcee5.js => 159.eb08087d.js} | 2 +- .../js/{159.9630fbe0.js => 160.131e9457.js} | 2 +- .../js/{160.afc25385.js => 161.c27c7516.js} | 2 +- .../js/{161.99ee95ac.js => 162.2dd4b173.js} | 2 +- .../js/{162.cbcfe123.js => 163.41e6f9e9.js} | 2 +- .../js/{163.b21dafb7.js => 164.4bc7bc1f.js} | 2 +- .../js/{164.a7f2cdc7.js => 165.8f777a1b.js} | 2 +- .../js/{165.5d71b320.js => 166.6b39915c.js} | 2 +- .../js/{166.1f040d77.js => 167.1bdb3584.js} | 2 +- .../js/{167.3de4a22a.js => 168.c2da0a6c.js} | 2 +- .../js/{168.02a9a0dc.js => 169.32c92fff.js} | 2 +- .../js/{169.af009cb3.js => 170.1ec6aaa8.js} | 2 +- .../js/{170.4ad52eba.js => 171.c6493e7e.js} | 2 +- .../js/{171.9dee287e.js => 172.f4ddc871.js} | 2 +- .../js/{172.ef00a2a5.js => 173.8836cad2.js} | 2 +- .../js/{173.9ebaf857.js => 174.b75e8d7a.js} | 2 +- .../js/{174.2377fe71.js => 175.bcce9ee9.js} | 2 +- .../js/{175.753f5b7f.js => 176.13582273.js} | 2 +- .../js/{176.8e2acb6e.js => 177.4359e0b3.js} | 2 +- .../js/{177.08513fd2.js => 178.c5e652a3.js} | 2 +- .../js/{178.8290c5ec.js => 179.1aef5715.js} | 2 +- .../js/{179.399b41db.js => 180.3e53a295.js} | 2 +- .../js/{180.8eb613b2.js => 181.e064689c.js} | 2 +- .../js/{181.d7a49160.js => 182.2424f294.js} | 2 +- .../js/{182.53950e06.js => 183.4cb62281.js} | 2 +- .../js/{183.f70ae8ce.js => 184.d6f4cd96.js} | 2 +- .../js/{184.5c08bd24.js => 185.335736b6.js} | 2 +- .../js/{185.3b631eba.js => 186.ec035be2.js} | 2 +- .../js/{186.e8098389.js => 187.7110b018.js} | 2 +- .../js/{187.6fdf8eb0.js => 188.141aa3c9.js} | 2 +- .../js/{188.a467d0d7.js => 189.a421a768.js} | 2 +- .../js/{189.e4d42bdd.js => 190.2da90f2a.js} | 2 +- .../js/{190.8984b4fe.js => 191.9ea83f87.js} | 2 +- .../js/{191.2ed7d1cf.js => 192.c96d3210.js} | 2 +- .../js/{192.658a2b15.js => 193.5fe34d24.js} | 2 +- .../js/{193.c2703653.js => 194.5d07c051.js} | 2 +- .../js/{194.963790ee.js => 195.1fb28614.js} | 2 +- .../js/{195.1e001d6e.js => 196.0e43efbb.js} | 2 +- .../js/{196.2c7c043b.js => 197.cf6efc02.js} | 2 +- .../js/{197.7b155b66.js => 198.ddc2ccb8.js} | 2 +- .../js/{198.27aa9861.js => 199.eabda552.js} | 2 +- .../js/{199.71b86486.js => 200.a54375c1.js} | 2 +- .../js/{200.783a6707.js => 201.ac6db399.js} | 2 +- .../js/{201.553b206e.js => 202.3bcc3d11.js} | 2 +- .../js/{202.dcb99727.js => 203.fae57e58.js} | 2 +- .../js/{203.97b4b62d.js => 204.ae8870a2.js} | 2 +- .../js/{204.d03450c3.js => 205.1dc3cce6.js} | 2 +- .../js/{205.f5d20f56.js => 206.1c66128a.js} | 2 +- .../js/{206.a01b246e.js => 207.ec1fd218.js} | 2 +- .../js/{207.1785176d.js => 208.c66a46fb.js} | 2 +- .../js/{208.8f4c56be.js => 209.fe94a577.js} | 2 +- .../js/{209.91523234.js => 210.ad747113.js} | 2 +- .../js/{210.f8ea6f68.js => 211.61b87b54.js} | 2 +- .../js/{211.8edd1820.js => 212.8ebc1028.js} | 2 +- .../js/{212.72bcc0e6.js => 213.6852c50e.js} | 2 +- .../js/{213.d2a16679.js => 214.081f1412.js} | 2 +- .../js/{214.0d3e2784.js => 215.d1ff3b95.js} | 2 +- .../js/{215.f9e54c5f.js => 216.d1ff9a62.js} | 2 +- .../js/{216.66638103.js => 217.29892dc8.js} | 2 +- .../js/{217.30d9b82d.js => 218.c2cde327.js} | 2 +- .../js/{218.dab5a48e.js => 219.8684ed2d.js} | 2 +- .../js/{219.1616b43c.js => 220.2eb1976c.js} | 2 +- .../js/{220.59e6e57f.js => 221.70073dc9.js} | 2 +- .../js/{221.ed7aa858.js => 222.50e36346.js} | 2 +- .../js/{222.9251fc35.js => 223.aa48eec7.js} | 2 +- .../js/{223.4368ce5c.js => 224.c1801006.js} | 2 +- .../js/{224.f09b867e.js => 225.6ae9ba12.js} | 2 +- .../js/{225.92e35b8d.js => 226.bd1a7903.js} | 2 +- .../js/{226.6b71a767.js => 227.84d7e178.js} | 2 +- .../js/{227.ce5629af.js => 228.1546af3a.js} | 2 +- .../js/{228.6e0e87db.js => 229.9942745b.js} | 2 +- .../js/{229.baae7756.js => 230.e5195a70.js} | 2 +- .../js/{230.d7f63f16.js => 231.1b617c7c.js} | 2 +- .../js/{231.e79b8ef6.js => 232.0c4f0e24.js} | 2 +- .../js/{232.9378afa7.js => 233.d4f6648e.js} | 2 +- .../js/{233.c207275d.js => 234.b56c4d14.js} | 2 +- .../js/{234.7f32024f.js => 235.53145b9a.js} | 2 +- .../js/{235.68f77d38.js => 236.40aa0e00.js} | 2 +- .../js/{236.9b3d743d.js => 237.fb665f70.js} | 2 +- .../js/{237.5b959bb8.js => 238.63710f9c.js} | 2 +- .../js/{238.7f2e07bf.js => 239.3757927e.js} | 2 +- .../js/{239.06697e82.js => 240.3bc74e4c.js} | 2 +- .../js/{240.04db620d.js => 241.a7d1bb50.js} | 2 +- .../js/{241.fe44eea1.js => 242.91958de3.js} | 2 +- .../js/{242.eeedab03.js => 243.8e6e3448.js} | 2 +- .../js/{243.4451a8f2.js => 244.250e7dce.js} | 2 +- .../js/{244.8d191f3d.js => 245.c5d3332a.js} | 2 +- .../js/{245.8a758ee8.js => 246.93386a82.js} | 2 +- .../js/{246.5cf3a32c.js => 247.06705346.js} | 2 +- .../js/{247.a06d66d8.js => 248.59fca26e.js} | 2 +- .../js/{248.d31f7786.js => 249.833e1c9e.js} | 2 +- .../js/{249.cacb8446.js => 250.6b6e3d0f.js} | 2 +- .../js/{250.e9e81d71.js => 251.431ccb5c.js} | 2 +- .../js/{251.6e96741a.js => 252.47b2be54.js} | 2 +- .../js/{252.474113a6.js => 253.5c1eb75b.js} | 2 +- .../js/{253.a7d7c64e.js => 254.468c89d9.js} | 2 +- docs/assets/js/255.6b8e4440.js | 1 - .../js/{254.ce07aeba.js => 255.f2efe504.js} | 2 +- docs/assets/js/256.000ea4dc.js | 1 + docs/assets/js/29.9679125e.js | 1 + .../js/{29.2943d2b1.js => 30.5e95096e.js} | 2 +- .../js/{30.30682e82.js => 31.c61eb777.js} | 2 +- .../js/{31.a28e2c86.js => 32.f53d6b17.js} | 2 +- .../js/{32.afd11928.js => 33.0b583cff.js} | 2 +- .../js/{33.10094ac2.js => 34.2d9acb27.js} | 2 +- .../js/{34.5fa26c32.js => 35.50e4e497.js} | 2 +- .../js/{35.be08ed08.js => 36.aeb6049b.js} | 2 +- .../js/{36.ff2564a9.js => 37.a18d34a0.js} | 2 +- .../js/{37.dc1c35d7.js => 38.896f5251.js} | 2 +- .../js/{38.52997528.js => 39.747c65b7.js} | 2 +- .../js/{39.e0b1e511.js => 40.071dd716.js} | 2 +- .../js/{40.657bf26b.js => 41.4c88d81b.js} | 2 +- .../js/{41.6c987ed4.js => 42.79a1e2ad.js} | 2 +- .../js/{42.ea1fc2f6.js => 43.ef8e80a5.js} | 2 +- .../js/{43.7d04874c.js => 44.b63a0074.js} | 2 +- .../js/{44.2deb6590.js => 45.5e6fca61.js} | 2 +- .../js/{45.9a3a3787.js => 46.1c2e0e38.js} | 2 +- .../js/{46.86d484cf.js => 47.89e7a405.js} | 2 +- .../js/{47.5c8af661.js => 48.cb2c6f01.js} | 2 +- .../js/{48.cb43fe18.js => 49.ec99ad0c.js} | 2 +- .../js/{49.b15609be.js => 50.462f8868.js} | 2 +- .../js/{50.fdd362e4.js => 51.131575e0.js} | 2 +- .../js/{51.8d891d79.js => 52.3b9d73fc.js} | 2 +- .../js/{52.b37be067.js => 53.77a11d17.js} | 2 +- .../js/{53.911e7ad0.js => 54.4611b6c3.js} | 2 +- .../js/{54.97ce600e.js => 55.417c1a6e.js} | 2 +- .../js/{55.e4dbe173.js => 56.ca40777b.js} | 2 +- .../js/{56.2b4a664e.js => 57.b18701e4.js} | 2 +- .../js/{57.da190fa1.js => 58.81b861ce.js} | 2 +- .../js/{58.edd39f1f.js => 59.9388c9e5.js} | 2 +- .../js/{59.eff85ca8.js => 60.caa549a6.js} | 2 +- .../js/{60.6b079ec3.js => 61.b4f987db.js} | 2 +- .../js/{61.1633aca9.js => 62.3e21d53a.js} | 2 +- .../js/{62.4d100495.js => 63.fdc3ce3c.js} | 2 +- .../js/{63.9a894c82.js => 64.53e6aa43.js} | 2 +- .../js/{64.c836ee81.js => 65.5bd523fb.js} | 2 +- .../js/{65.1527554e.js => 66.5f0c7d8c.js} | 2 +- .../js/{66.f2241613.js => 67.83f09a69.js} | 2 +- .../js/{67.011ff2a8.js => 68.2ef6bd64.js} | 2 +- .../js/{68.40e8ad71.js => 69.101579c0.js} | 2 +- .../js/{69.9bb29758.js => 70.ae38deda.js} | 2 +- .../js/{70.b18e97cd.js => 71.cd922f77.js} | 2 +- .../js/{71.86f80080.js => 72.03d64b50.js} | 2 +- .../js/{72.97ab3850.js => 73.e3da706f.js} | 2 +- .../js/{73.0397ef63.js => 74.f697f721.js} | 2 +- .../js/{74.b5c04a7b.js => 75.0545c154.js} | 2 +- .../js/{75.c5db01bd.js => 76.08ef1384.js} | 2 +- .../js/{76.5e427283.js => 77.6b1fc6cc.js} | 2 +- .../js/{77.83ea8f61.js => 78.3ab65613.js} | 2 +- .../js/{78.2013db59.js => 79.5da88991.js} | 2 +- .../js/{79.c3beff77.js => 80.84ba9e76.js} | 2 +- .../js/{80.f37567b1.js => 81.9795416a.js} | 2 +- .../js/{81.2703d5db.js => 82.f8307c60.js} | 2 +- .../js/{82.77b2d754.js => 83.49c103cb.js} | 2 +- .../js/{83.bf71d879.js => 84.c3dfb58a.js} | 2 +- .../js/{84.c3f3cf24.js => 85.a69d7e8a.js} | 2 +- .../js/{85.05d23b25.js => 86.a482e081.js} | 2 +- .../js/{86.908a8665.js => 87.6adabf76.js} | 2 +- .../js/{87.deb5de7a.js => 88.58d796d3.js} | 2 +- .../js/{88.07fa64af.js => 89.742a9fd9.js} | 2 +- .../js/{89.5f224078.js => 90.aa7caff5.js} | 2 +- .../js/{90.324dbca9.js => 91.44d500bf.js} | 2 +- .../js/{91.76e9d68e.js => 92.1a5e6dba.js} | 2 +- .../js/{92.461d89cf.js => 93.1193bc85.js} | 2 +- .../js/{93.d00df968.js => 94.4ae8066d.js} | 2 +- .../js/{94.e307632f.js => 95.35ea0b34.js} | 2 +- .../js/{95.6909628d.js => 96.0c6a350c.js} | 2 +- .../js/{96.9ed2e944.js => 97.2c742cfe.js} | 2 +- .../js/{97.056d0108.js => 98.c581b9c5.js} | 2 +- docs/assets/js/99.3caec563.js | 1 - .../js/{98.764dc8b2.js => 99.af4c71f7.js} | 2 +- docs/assets/js/app.6ce99680.js | 3 - docs/assets/js/app.b1687f60.js | 3 + docs/data/data-basics.html | 4 +- docs/data/files-formats/asciidoc-infos.html | 4 +- docs/data/files-formats/json.html | 4 +- .../files-formats/markdown-from-gitlab.html | 4 +- docs/data/files-formats/markdown-infos.html | 4 +- docs/data/files-formats/xml.html | 4 +- docs/data/files-formats/yaml.html | 4 +- docs/data/index.html | 4 +- docs/devops/devops-accelerate.html | 4 +- docs/devops/devops-metrics.html | 4 +- docs/devops/devops-overview.html | 4 +- docs/devops/docker.html | 4 +- docs/devops/github-actions.html | 4 +- docs/devops/index.html | 4 +- docs/devops/kubernetes.html | 4 +- docs/devops/paas/heroku/heroku-angularjs.html | 4 +- docs/devops/paas/heroku/heroku-helper.html | 4 +- .../paas/heroku/heroku-sendgrid-mailer.html | 4 +- docs/divers/divers-articles.html | 6 +- docs/divers/divers-dev-ethics.html | 6 +- docs/divers/divers-outil-veille-techno.html | 6 +- docs/divers/divers-pdf.html | 6 +- docs/divers/divers-videos.html | 6 +- docs/divers/freebox/freebox-videos.html | 10 ++-- docs/divers/ia/ia.html | 49 +++++++++++++++++ docs/divers/index.html | 6 +- docs/divers/licences/licences-WTFPL.html | 6 +- .../licences-articles-opensource.html | 10 ++-- .../licences/licences-choose-a-licence.html | 6 +- docs/divers/raspberry/raspberry-overview.html | 6 +- docs/index.html | 4 +- docs/languages/SQL/ACID.html | 4 +- docs/languages/SQL/postgre-setup.html | 4 +- .../css/css-block-element-modifier.html | 4 +- .../css/css-conventions.nommage.html.css.html | 4 +- docs/languages/css/css-overview.html | 4 +- docs/languages/css/css-preprocessors.html | 4 +- docs/languages/css/css-selectors.html | 4 +- docs/languages/css/css-tips.html | 4 +- docs/languages/html/html-tips.html | 4 +- docs/languages/index.html | 4 +- docs/languages/java/java-ant-tips.html | 4 +- .../java-jackson-cyclic-relationship.html | 4 +- docs/languages/java/java-jpa-infos.html | 4 +- docs/languages/java/java-security-links.html | 4 +- docs/languages/js/ES6-overview.html | 4 +- docs/languages/js/ES6-promises.html | 4 +- docs/languages/js/ES6-proxies.html | 4 +- docs/languages/js/javascript-overview.html | 4 +- docs/languages/js/js-best-practices.html | 4 +- .../js/js-browser-geolocalisation.html | 4 +- docs/languages/js/js-closures.html | 4 +- docs/languages/js/js-database-memo.html | 4 +- docs/languages/js/js-date.html | 4 +- docs/languages/js/js-doc.html | 4 +- docs/languages/js/js-double-negation.html | 4 +- docs/languages/js/js-download-files.html | 4 +- docs/languages/js/js-duck-typing.html | 4 +- docs/languages/js/js-fetch-api.html | 4 +- .../js/js-fonctions-anonymes-IIFE.html | 4 +- .../js/js-function-invocation-patterns.html | 4 +- docs/languages/js/js-iframe.html | 4 +- docs/languages/js/js-math.html | 4 +- docs/languages/js/js-modules.html | 4 +- docs/languages/js/js-named-f-vs-expr-f.html | 4 +- docs/languages/js/js-prototype.html | 4 +- docs/languages/js/js-samples-and-miscs.html | 4 +- docs/languages/js/js-simple-logger.html | 4 +- .../js/js-spa-software-architecture.html | 4 +- .../js/js-understanding-this-keyword.html | 4 +- docs/languages/js/js-web-storage.html | 4 +- docs/languages/js/js-webapp-build.html | 4 +- docs/languages/js/ts-typescript-overview.html | 4 +- docs/languages/rust/rust-install.html | 4 +- docs/languages/rust/rust-overview.html | 4 +- docs/network/index.html | 4 +- docs/network/internet.html | 4 +- docs/network/protocols/TCP.html | 4 +- docs/network/protocols/http.html | 4 +- .../angular-js/angular-js-SEO.html | 4 +- .../angular-js/angular-js-auth.html | 4 +- .../angular-js/angular-js-best-practices.html | 4 +- .../angular-js/angular-js-components.html | 4 +- .../angular-js/angular-js-controllers.html | 4 +- .../angular-js/angular-js-decorator.html | 4 +- .../angular-js/angular-js-dep-inj.html | 4 +- .../angular-js/angular-js-directives.html | 4 +- .../angular-js-errors-exceptions.html | 4 +- .../angular-js/angular-js-init-app.html | 4 +- .../angular-js-knowledge-overview.html | 4 +- .../angular-js-lazy-downloading.html | 4 +- .../angular-js/angular-js-misc.html | 4 +- .../angular-js/angular-js-mobile.html | 4 +- .../angular-js/angular-js-module.html | 4 +- .../angular-js/angular-js-optimisation.html | 4 +- .../angular-js/angular-js-promise.html | 4 +- .../angular-js/angular-js-routing.html | 4 +- .../angular-js/angular-js-services.html | 4 +- .../angular-js/angular-js-template-cache.html | 4 +- .../angular-js/angular-js-testing.html | 4 +- .../angular-migration-from-angular-js.html | 4 +- .../angular/angular-overview.html | 4 +- .../deno/deno-overview.html | 4 +- docs/platforms-frameworks-libs/index.html | 4 +- .../node.js/nodejs-best-practices.html | 4 +- .../nodejs-express-project-structure.html | 4 +- .../node.js/nodejs-handling-errors.html | 4 +- .../node.js/nodejs-handling-files.html | 4 +- .../node.js/nodejs-hello-world.html | 4 +- .../node.js/nodejs-links.html | 4 +- .../node.js/nodejs-logging.html | 4 +- .../node.js/nodejs-mock-via-express.html | 4 +- .../node.js/nodejs-modules.html | 4 +- .../node.js/nodejs-rest-api-frameworks.html | 4 +- .../play-framework/java-play-OAuth.html | 4 +- .../play-framework/java-play-async.html | 4 +- .../play-framework/java-play-config-idea.html | 4 +- ...-play-gestion-fichier-config-dev-prod.html | 4 +- .../java-play-pojo-validation.html | 4 +- .../svelte/svelte-overview.html | 4 +- .../vuejs/vuejs-overview.html | 4 +- docs/security/CORS/infos-CORS.html | 4 +- docs/security/CORS/infos-JSONP.html | 4 +- docs/security/PKI-X509.html | 4 +- docs/security/authentification.html | 4 +- docs/security/blockchains.html | 4 +- docs/security/chiffrement.html | 4 +- docs/security/index.html | 4 +- docs/security/security-basics.html | 4 +- docs/security/security-webapp.html | 4 +- .../archi-micro-services.html | 4 +- docs/software-engineering/architecture.html | 4 +- .../brooks-no-silver-bullet-notes.html | 4 +- .../software-engineering/code-complexity.html | 4 +- docs/software-engineering/code-reviews.html | 4 +- docs/software-engineering/compilateur.html | 4 +- .../composition-over-inheritance.html | 4 +- docs/software-engineering/ddd.html | 4 +- .../dette-technique-et-TTM.html | 4 +- docs/software-engineering/genie-logiciel.html | 4 +- docs/software-engineering/index.html | 4 +- docs/software-engineering/paradigms.html | 4 +- .../reeves-what-is-software-design-notes.html | 4 +- docs/software-engineering/scrum-memo.html | 4 +- docs/software-engineering/semver.html | 4 +- docs/software-engineering/stamps.html | 4 +- docs/software-engineering/testing.html | 4 +- docs/software-engineering/typings.html | 4 +- docs/systems/filesystem.html | 4 +- docs/systems/index.html | 4 +- docs/systems/linux/apt-cheatsheet.html | 4 +- .../linux/bash/bash-notes-whiptail.html | 4 +- docs/systems/linux/linux-fhs-description.html | 4 +- docs/systems/linux/linux-fhs-droits.html | 4 +- docs/systems/linux/linux-logs.html | 4 +- .../linux/linux-manipulation-fichiers.html | 4 +- .../linux/linux-manipulation-process.html | 4 +- docs/systems/linux/ubuntu-cheatsheet.html | 4 +- .../systems/linux/ubuntu-create-usb-boot.html | 4 +- docs/systems/linux/ubuntu-nvidia.html | 4 +- docs/systems/linux/ubuntu-pdf.html | 4 +- docs/systems/process-signals.html | 4 +- docs/systems/windows/windows-checksum.html | 4 +- .../windows/windows-ubuntu-on-windows10.html | 4 +- docs/tools/cheat-sheets.html | 4 +- docs/tools/diagrams.html | 4 +- docs/tools/elasticsearch-overview.html | 4 +- docs/tools/envinfo.html | 4 +- docs/tools/fiddler.html | 4 +- docs/tools/file-diff-online-tools.html | 4 +- docs/tools/git/git-articles-divers.html | 4 +- docs/tools/git/git-cheatsheet.html | 4 +- docs/tools/git/git-config.html | 4 +- docs/tools/git/git-cours.html | 4 +- docs/tools/git/git-definitions.html | 4 +- docs/tools/git/git-gitignore-example.html | 4 +- docs/tools/git/git-internals.html | 4 +- docs/tools/git/git-rebase.html | 4 +- docs/tools/git/git-reflog.html | 4 +- docs/tools/git/git-remotes.html | 4 +- docs/tools/git/git-tags-management.html | 4 +- docs/tools/git/git-tools.html | 4 +- docs/tools/git/git-tracking-branches.html | 4 +- docs/tools/git/git-useful-commands.html | 4 +- docs/tools/git/git-workflow.html | 4 +- docs/tools/gitbook/gitbook-intro.html | 4 +- docs/tools/index.html | 4 +- docs/tools/jetbrains/jetbrains-overview.html | 4 +- docs/tools/json-web-token-tools.html | 4 +- docs/tools/nano-memo.html | 4 +- docs/tools/npm/npm-memo.html | 4 +- docs/tools/npm/npm-on-windows.html | 4 +- docs/tools/npm/npm-packages.html | 4 +- docs/tools/npm/npm-registry.html | 4 +- docs/tools/npm/npm-security.html | 4 +- docs/tools/npm/npm-shrinkwrap.html | 4 +- docs/tools/regex-online-tools.html | 4 +- docs/tools/security-tools-online.html | 4 +- docs/tools/slides/fusuma/fusuma.html | 4 +- .../tools/slides/gitpitch/gitpitch-intro.html | 4 +- docs/tools/slides/slides.html | 4 +- docs/tools/slides/webslides/webslides.html | 4 +- docs/tools/social/social-mastodon.html | 4 +- docs/tools/testing/cypress.html | 4 +- docs/tools/testing/debug-js-in-webstorm.html | 4 +- docs/tools/testing/jasmine.html | 4 +- docs/tools/testing/jest.html | 4 +- docs/tools/testing/karma.html | 4 +- docs/tools/testing/qunit.html | 4 +- .../testing/testing-tools-for-javascript.html | 4 +- docs/tools/testing/tuto-cypress.html | 4 +- docs/tools/tools-auto-deps-update.html | 4 +- docs/tools/tools-bower.html | 4 +- docs/tools/tools-bundlers.html | 4 +- docs/tools/tools-grunt.html | 4 +- docs/tools/tools-gulp.html | 4 +- docs/tools/tools-js-linters.html | 4 +- docs/tools/tools-markdown-editor.html | 4 +- docs/tools/tools-release-workflow.html | 4 +- docs/tools/tools-semantic-release.html | 4 +- docs/tools/tools-yeoman.html | 4 +- docs/tools/ux-tools-and-links.html | 4 +- docs/tools/vim-memo.html | 4 +- docs/tools/visual-studio-code.html | 4 +- docs/web/REST/open-api-initiative.html | 4 +- docs/web/REST/rest-api-return-http-code.html | 4 +- docs/web/REST/rest-best-practices.html | 4 +- docs/web/REST/rest-design-tool-RAML.html | 4 +- .../web/REST/rest-design-tool-swagger-io.html | 4 +- .../REST/rest-naming-convention-links.html | 4 +- docs/web/RFC/RFC-http.html | 4 +- docs/web/RFC/RFC-overview.html | 4 +- docs/web/SEO.html | 4 +- .../browsers-how-they-init-web-page.html | 4 +- docs/web/browsers/browsers-overview.html | 4 +- docs/web/browsers/browsers-perfs.html | 4 +- docs/web/cookies/cookies.html | 4 +- docs/web/debug-chrome-android.html | 4 +- docs/web/gestion-monetisation-web.html | 4 +- docs/web/http-cache.html | 4 +- docs/web/index.html | 4 +- docs/web/polyfills-shivs-shims.html | 4 +- docs/web/regex.html | 4 +- docs/web/shadow-dom.html | 4 +- docs/web/web-comparatifs-frameworks.html | 4 +- docs/web/web-components.html | 4 +- docs/web/web-generic-good-practices.html | 4 +- docs/web/web-login-forms-good-practices.html | 4 +- docs/web/web-scraping.html | 4 +- docs/web/web-semantic-web.html | 4 +- docs/web/web-test-selenium.html | 4 +- docs/web/web-tracking.html | 4 +- docs/web/webassembly.html | 4 +- 488 files changed, 865 insertions(+), 752 deletions(-) create mode 100644 content/divers/ia/ia.md create mode 100644 docs/assets/js/100.6a2b43d6.js rename docs/assets/js/{100.44086804.js => 101.c2c7bbe7.js} (96%) rename docs/assets/js/{101.4da4f53c.js => 102.339e4904.js} (98%) rename docs/assets/js/{102.4dfbc78f.js => 103.4e268280.js} (99%) rename docs/assets/js/{103.d43d607c.js => 104.ffcb3213.js} (99%) rename docs/assets/js/{104.b58b54a2.js => 105.a210265a.js} (99%) rename docs/assets/js/{105.2bc29497.js => 106.80d54c16.js} (99%) rename docs/assets/js/{106.6e8d585c.js => 107.28111c9b.js} (99%) rename docs/assets/js/{107.a8a7ab96.js => 108.0b24b5ed.js} (99%) rename docs/assets/js/{108.a5f65961.js => 109.11ed044e.js} (99%) rename docs/assets/js/{109.96c1d046.js => 110.900b5784.js} (99%) rename docs/assets/js/{110.646b9744.js => 111.a5507ddb.js} (99%) rename docs/assets/js/{111.77988ebe.js => 112.86a20ab2.js} (99%) rename docs/assets/js/{112.eb506b42.js => 113.eaa1ff8d.js} (99%) rename docs/assets/js/{113.f4a27dd0.js => 114.32b9c5ef.js} (99%) rename docs/assets/js/{114.58dc6ed5.js => 115.fcd18b43.js} (99%) rename docs/assets/js/{115.4fcfa77e.js => 116.4ba32576.js} (98%) rename docs/assets/js/{116.63bb6bae.js => 117.21bd1631.js} (96%) rename docs/assets/js/{117.fe31afcf.js => 118.0bc76cae.js} (93%) rename docs/assets/js/{118.8972b292.js => 119.40317b0b.js} (94%) rename docs/assets/js/{119.800e09fb.js => 120.78635538.js} (95%) rename docs/assets/js/{120.fafbda22.js => 121.b8887df0.js} (99%) rename docs/assets/js/{121.ccecf498.js => 122.d2f1ca35.js} (99%) rename docs/assets/js/{122.f7b7f3cd.js => 123.06add9f5.js} (99%) rename docs/assets/js/{123.f8a9a26f.js => 124.4a82543e.js} (99%) rename docs/assets/js/{124.fca1bc4a.js => 125.49be7fd9.js} (89%) rename docs/assets/js/{125.21ff3e0b.js => 126.41a04deb.js} (88%) rename docs/assets/js/{126.973c6acd.js => 127.8e9d36e5.js} (84%) rename docs/assets/js/{127.18d4e51d.js => 128.88353661.js} (99%) rename docs/assets/js/{128.69bba1da.js => 129.a22185b5.js} (99%) rename docs/assets/js/{129.ec07156a.js => 130.3b2ecb1d.js} (98%) rename docs/assets/js/{130.48e0b608.js => 131.b951c1e9.js} (99%) rename docs/assets/js/{131.38a3297b.js => 132.0fd2b133.js} (99%) rename docs/assets/js/{132.c264f9f9.js => 133.341b1a5d.js} (86%) rename docs/assets/js/{133.b0e32f85.js => 134.923162c9.js} (97%) rename docs/assets/js/{134.da08dc69.js => 135.0ddc118f.js} (99%) rename docs/assets/js/{135.4db3caa6.js => 136.d0278d26.js} (99%) rename docs/assets/js/{136.47168706.js => 137.193f1051.js} (99%) rename docs/assets/js/{137.d8672f4f.js => 138.061ca80e.js} (98%) rename docs/assets/js/{138.a427604b.js => 139.8b0a39e7.js} (98%) rename docs/assets/js/{139.a1f2bf49.js => 140.17a92c71.js} (99%) rename docs/assets/js/{140.ddd7400a.js => 141.36b604fa.js} (96%) rename docs/assets/js/{141.91de2cfe.js => 142.38064372.js} (99%) rename docs/assets/js/{142.e6793b43.js => 143.7e318195.js} (99%) rename docs/assets/js/{143.1d1c340a.js => 144.3505939f.js} (99%) rename docs/assets/js/{144.e723c154.js => 145.c95da964.js} (98%) rename docs/assets/js/{145.8b2ab29c.js => 146.6286ba7c.js} (96%) rename docs/assets/js/{146.9969d410.js => 147.a55a1037.js} (92%) rename docs/assets/js/{147.a9168f18.js => 148.801e3771.js} (98%) rename docs/assets/js/{148.70dcc20d.js => 149.0319b27e.js} (99%) rename docs/assets/js/{149.2fa4818d.js => 150.be8582d4.js} (99%) rename docs/assets/js/{150.f73e304b.js => 151.942b5d27.js} (84%) rename docs/assets/js/{151.e14e6936.js => 152.b2b0e5e3.js} (98%) rename docs/assets/js/{152.9e7cd6ad.js => 153.39726729.js} (97%) rename docs/assets/js/{153.ffc07153.js => 154.dd143f32.js} (99%) rename docs/assets/js/{154.63a6d119.js => 155.93eca6f3.js} (99%) rename docs/assets/js/{155.98778ceb.js => 156.059cae88.js} (99%) rename docs/assets/js/{156.cc2d70ff.js => 157.795549f7.js} (96%) rename docs/assets/js/{157.41e10630.js => 158.d541f26e.js} (99%) rename docs/assets/js/{158.e9ffcee5.js => 159.eb08087d.js} (99%) rename docs/assets/js/{159.9630fbe0.js => 160.131e9457.js} (98%) rename docs/assets/js/{160.afc25385.js => 161.c27c7516.js} (94%) rename docs/assets/js/{161.99ee95ac.js => 162.2dd4b173.js} (98%) rename docs/assets/js/{162.cbcfe123.js => 163.41e6f9e9.js} (96%) rename docs/assets/js/{163.b21dafb7.js => 164.4bc7bc1f.js} (99%) rename docs/assets/js/{164.a7f2cdc7.js => 165.8f777a1b.js} (94%) rename docs/assets/js/{165.5d71b320.js => 166.6b39915c.js} (96%) rename docs/assets/js/{166.1f040d77.js => 167.1bdb3584.js} (84%) rename docs/assets/js/{167.3de4a22a.js => 168.c2da0a6c.js} (94%) rename docs/assets/js/{168.02a9a0dc.js => 169.32c92fff.js} (98%) rename docs/assets/js/{169.af009cb3.js => 170.1ec6aaa8.js} (99%) rename docs/assets/js/{170.4ad52eba.js => 171.c6493e7e.js} (99%) rename docs/assets/js/{171.9dee287e.js => 172.f4ddc871.js} (91%) rename docs/assets/js/{172.ef00a2a5.js => 173.8836cad2.js} (90%) rename docs/assets/js/{173.9ebaf857.js => 174.b75e8d7a.js} (98%) rename docs/assets/js/{174.2377fe71.js => 175.bcce9ee9.js} (90%) rename docs/assets/js/{175.753f5b7f.js => 176.13582273.js} (99%) rename docs/assets/js/{176.8e2acb6e.js => 177.4359e0b3.js} (92%) rename docs/assets/js/{177.08513fd2.js => 178.c5e652a3.js} (99%) rename docs/assets/js/{178.8290c5ec.js => 179.1aef5715.js} (99%) rename docs/assets/js/{179.399b41db.js => 180.3e53a295.js} (99%) rename docs/assets/js/{180.8eb613b2.js => 181.e064689c.js} (99%) rename docs/assets/js/{181.d7a49160.js => 182.2424f294.js} (98%) rename docs/assets/js/{182.53950e06.js => 183.4cb62281.js} (99%) rename docs/assets/js/{183.f70ae8ce.js => 184.d6f4cd96.js} (98%) rename docs/assets/js/{184.5c08bd24.js => 185.335736b6.js} (99%) rename docs/assets/js/{185.3b631eba.js => 186.ec035be2.js} (99%) rename docs/assets/js/{186.e8098389.js => 187.7110b018.js} (99%) rename docs/assets/js/{187.6fdf8eb0.js => 188.141aa3c9.js} (99%) rename docs/assets/js/{188.a467d0d7.js => 189.a421a768.js} (98%) rename docs/assets/js/{189.e4d42bdd.js => 190.2da90f2a.js} (97%) rename docs/assets/js/{190.8984b4fe.js => 191.9ea83f87.js} (89%) rename docs/assets/js/{191.2ed7d1cf.js => 192.c96d3210.js} (99%) rename docs/assets/js/{192.658a2b15.js => 193.5fe34d24.js} (99%) rename docs/assets/js/{193.c2703653.js => 194.5d07c051.js} (94%) rename docs/assets/js/{194.963790ee.js => 195.1fb28614.js} (99%) rename docs/assets/js/{195.1e001d6e.js => 196.0e43efbb.js} (99%) rename docs/assets/js/{196.2c7c043b.js => 197.cf6efc02.js} (98%) rename docs/assets/js/{197.7b155b66.js => 198.ddc2ccb8.js} (99%) rename docs/assets/js/{198.27aa9861.js => 199.eabda552.js} (92%) rename docs/assets/js/{199.71b86486.js => 200.a54375c1.js} (92%) rename docs/assets/js/{200.783a6707.js => 201.ac6db399.js} (94%) rename docs/assets/js/{201.553b206e.js => 202.3bcc3d11.js} (94%) rename docs/assets/js/{202.dcb99727.js => 203.fae57e58.js} (93%) rename docs/assets/js/{203.97b4b62d.js => 204.ae8870a2.js} (92%) rename docs/assets/js/{204.d03450c3.js => 205.1dc3cce6.js} (97%) rename docs/assets/js/{205.f5d20f56.js => 206.1c66128a.js} (99%) rename docs/assets/js/{206.a01b246e.js => 207.ec1fd218.js} (98%) rename docs/assets/js/{207.1785176d.js => 208.c66a46fb.js} (92%) rename docs/assets/js/{208.8f4c56be.js => 209.fe94a577.js} (98%) rename docs/assets/js/{209.91523234.js => 210.ad747113.js} (99%) rename docs/assets/js/{210.f8ea6f68.js => 211.61b87b54.js} (92%) rename docs/assets/js/{211.8edd1820.js => 212.8ebc1028.js} (97%) rename docs/assets/js/{212.72bcc0e6.js => 213.6852c50e.js} (99%) rename docs/assets/js/{213.d2a16679.js => 214.081f1412.js} (98%) rename docs/assets/js/{214.0d3e2784.js => 215.d1ff3b95.js} (97%) rename docs/assets/js/{215.f9e54c5f.js => 216.d1ff9a62.js} (98%) rename docs/assets/js/{216.66638103.js => 217.29892dc8.js} (99%) rename docs/assets/js/{217.30d9b82d.js => 218.c2cde327.js} (99%) rename docs/assets/js/{218.dab5a48e.js => 219.8684ed2d.js} (99%) rename docs/assets/js/{219.1616b43c.js => 220.2eb1976c.js} (92%) rename docs/assets/js/{220.59e6e57f.js => 221.70073dc9.js} (99%) rename docs/assets/js/{221.ed7aa858.js => 222.50e36346.js} (99%) rename docs/assets/js/{222.9251fc35.js => 223.aa48eec7.js} (98%) rename docs/assets/js/{223.4368ce5c.js => 224.c1801006.js} (99%) rename docs/assets/js/{224.f09b867e.js => 225.6ae9ba12.js} (99%) rename docs/assets/js/{225.92e35b8d.js => 226.bd1a7903.js} (98%) rename docs/assets/js/{226.6b71a767.js => 227.84d7e178.js} (84%) rename docs/assets/js/{227.ce5629af.js => 228.1546af3a.js} (97%) rename docs/assets/js/{228.6e0e87db.js => 229.9942745b.js} (98%) rename docs/assets/js/{229.baae7756.js => 230.e5195a70.js} (99%) rename docs/assets/js/{230.d7f63f16.js => 231.1b617c7c.js} (96%) rename docs/assets/js/{231.e79b8ef6.js => 232.0c4f0e24.js} (98%) rename docs/assets/js/{232.9378afa7.js => 233.d4f6648e.js} (95%) rename docs/assets/js/{233.c207275d.js => 234.b56c4d14.js} (96%) rename docs/assets/js/{234.7f32024f.js => 235.53145b9a.js} (97%) rename docs/assets/js/{235.68f77d38.js => 236.40aa0e00.js} (98%) rename docs/assets/js/{236.9b3d743d.js => 237.fb665f70.js} (99%) rename docs/assets/js/{237.5b959bb8.js => 238.63710f9c.js} (99%) rename docs/assets/js/{238.7f2e07bf.js => 239.3757927e.js} (99%) rename docs/assets/js/{239.06697e82.js => 240.3bc74e4c.js} (96%) rename docs/assets/js/{240.04db620d.js => 241.a7d1bb50.js} (91%) rename docs/assets/js/{241.fe44eea1.js => 242.91958de3.js} (95%) rename docs/assets/js/{242.eeedab03.js => 243.8e6e3448.js} (98%) rename docs/assets/js/{243.4451a8f2.js => 244.250e7dce.js} (96%) rename docs/assets/js/{244.8d191f3d.js => 245.c5d3332a.js} (97%) rename docs/assets/js/{245.8a758ee8.js => 246.93386a82.js} (98%) rename docs/assets/js/{246.5cf3a32c.js => 247.06705346.js} (98%) rename docs/assets/js/{247.a06d66d8.js => 248.59fca26e.js} (98%) rename docs/assets/js/{248.d31f7786.js => 249.833e1c9e.js} (99%) rename docs/assets/js/{249.cacb8446.js => 250.6b6e3d0f.js} (99%) rename docs/assets/js/{250.e9e81d71.js => 251.431ccb5c.js} (97%) rename docs/assets/js/{251.6e96741a.js => 252.47b2be54.js} (99%) rename docs/assets/js/{252.474113a6.js => 253.5c1eb75b.js} (96%) rename docs/assets/js/{253.a7d7c64e.js => 254.468c89d9.js} (99%) delete mode 100644 docs/assets/js/255.6b8e4440.js rename docs/assets/js/{254.ce07aeba.js => 255.f2efe504.js} (96%) create mode 100644 docs/assets/js/256.000ea4dc.js create mode 100644 docs/assets/js/29.9679125e.js rename docs/assets/js/{29.2943d2b1.js => 30.5e95096e.js} (93%) rename docs/assets/js/{30.30682e82.js => 31.c61eb777.js} (91%) rename docs/assets/js/{31.a28e2c86.js => 32.f53d6b17.js} (92%) rename docs/assets/js/{32.afd11928.js => 33.0b583cff.js} (98%) rename docs/assets/js/{33.10094ac2.js => 34.2d9acb27.js} (86%) rename docs/assets/js/{34.5fa26c32.js => 35.50e4e497.js} (96%) rename docs/assets/js/{35.be08ed08.js => 36.aeb6049b.js} (97%) rename docs/assets/js/{36.ff2564a9.js => 37.a18d34a0.js} (92%) rename docs/assets/js/{37.dc1c35d7.js => 38.896f5251.js} (90%) rename docs/assets/js/{38.52997528.js => 39.747c65b7.js} (99%) rename docs/assets/js/{39.e0b1e511.js => 40.071dd716.js} (95%) rename docs/assets/js/{40.657bf26b.js => 41.4c88d81b.js} (99%) rename docs/assets/js/{41.6c987ed4.js => 42.79a1e2ad.js} (98%) rename docs/assets/js/{42.ea1fc2f6.js => 43.ef8e80a5.js} (99%) rename docs/assets/js/{43.7d04874c.js => 44.b63a0074.js} (93%) rename docs/assets/js/{44.2deb6590.js => 45.5e6fca61.js} (94%) rename docs/assets/js/{45.9a3a3787.js => 46.1c2e0e38.js} (98%) rename docs/assets/js/{46.86d484cf.js => 47.89e7a405.js} (98%) rename docs/assets/js/{47.5c8af661.js => 48.cb2c6f01.js} (92%) rename docs/assets/js/{48.cb43fe18.js => 49.ec99ad0c.js} (98%) rename docs/assets/js/{49.b15609be.js => 50.462f8868.js} (91%) rename docs/assets/js/{50.fdd362e4.js => 51.131575e0.js} (99%) rename docs/assets/js/{51.8d891d79.js => 52.3b9d73fc.js} (99%) rename docs/assets/js/{52.b37be067.js => 53.77a11d17.js} (92%) rename docs/assets/js/{53.911e7ad0.js => 54.4611b6c3.js} (99%) rename docs/assets/js/{54.97ce600e.js => 55.417c1a6e.js} (97%) rename docs/assets/js/{55.e4dbe173.js => 56.ca40777b.js} (97%) rename docs/assets/js/{56.2b4a664e.js => 57.b18701e4.js} (93%) rename docs/assets/js/{57.da190fa1.js => 58.81b861ce.js} (96%) rename docs/assets/js/{58.edd39f1f.js => 59.9388c9e5.js} (99%) rename docs/assets/js/{59.eff85ca8.js => 60.caa549a6.js} (99%) rename docs/assets/js/{60.6b079ec3.js => 61.b4f987db.js} (98%) rename docs/assets/js/{61.1633aca9.js => 62.3e21d53a.js} (97%) rename docs/assets/js/{62.4d100495.js => 63.fdc3ce3c.js} (99%) rename docs/assets/js/{63.9a894c82.js => 64.53e6aa43.js} (98%) rename docs/assets/js/{64.c836ee81.js => 65.5bd523fb.js} (98%) rename docs/assets/js/{65.1527554e.js => 66.5f0c7d8c.js} (99%) rename docs/assets/js/{66.f2241613.js => 67.83f09a69.js} (98%) rename docs/assets/js/{67.011ff2a8.js => 68.2ef6bd64.js} (91%) rename docs/assets/js/{68.40e8ad71.js => 69.101579c0.js} (99%) rename docs/assets/js/{69.9bb29758.js => 70.ae38deda.js} (99%) rename docs/assets/js/{70.b18e97cd.js => 71.cd922f77.js} (99%) rename docs/assets/js/{71.86f80080.js => 72.03d64b50.js} (99%) rename docs/assets/js/{72.97ab3850.js => 73.e3da706f.js} (90%) rename docs/assets/js/{73.0397ef63.js => 74.f697f721.js} (99%) rename docs/assets/js/{74.b5c04a7b.js => 75.0545c154.js} (99%) rename docs/assets/js/{75.c5db01bd.js => 76.08ef1384.js} (99%) rename docs/assets/js/{76.5e427283.js => 77.6b1fc6cc.js} (98%) rename docs/assets/js/{77.83ea8f61.js => 78.3ab65613.js} (84%) rename docs/assets/js/{78.2013db59.js => 79.5da88991.js} (96%) rename docs/assets/js/{79.c3beff77.js => 80.84ba9e76.js} (95%) rename docs/assets/js/{80.f37567b1.js => 81.9795416a.js} (97%) rename docs/assets/js/{81.2703d5db.js => 82.f8307c60.js} (86%) rename docs/assets/js/{82.77b2d754.js => 83.49c103cb.js} (98%) rename docs/assets/js/{83.bf71d879.js => 84.c3dfb58a.js} (97%) rename docs/assets/js/{84.c3f3cf24.js => 85.a69d7e8a.js} (99%) rename docs/assets/js/{85.05d23b25.js => 86.a482e081.js} (99%) rename docs/assets/js/{86.908a8665.js => 87.6adabf76.js} (99%) rename docs/assets/js/{87.deb5de7a.js => 88.58d796d3.js} (99%) rename docs/assets/js/{88.07fa64af.js => 89.742a9fd9.js} (98%) rename docs/assets/js/{89.5f224078.js => 90.aa7caff5.js} (99%) rename docs/assets/js/{90.324dbca9.js => 91.44d500bf.js} (99%) rename docs/assets/js/{91.76e9d68e.js => 92.1a5e6dba.js} (99%) rename docs/assets/js/{92.461d89cf.js => 93.1193bc85.js} (98%) rename docs/assets/js/{93.d00df968.js => 94.4ae8066d.js} (97%) rename docs/assets/js/{94.e307632f.js => 95.35ea0b34.js} (99%) rename docs/assets/js/{95.6909628d.js => 96.0c6a350c.js} (99%) rename docs/assets/js/{96.9ed2e944.js => 97.2c742cfe.js} (98%) rename docs/assets/js/{97.056d0108.js => 98.c581b9c5.js} (98%) delete mode 100644 docs/assets/js/99.3caec563.js rename docs/assets/js/{98.764dc8b2.js => 99.af4c71f7.js} (98%) delete mode 100644 docs/assets/js/app.6ce99680.js create mode 100644 docs/assets/js/app.b1687f60.js create mode 100644 docs/divers/ia/ia.html diff --git a/content/.vuepress/sidebar-config/divers.js b/content/.vuepress/sidebar-config/divers.js index e2908849..a4b826b7 100644 --- a/content/.vuepress/sidebar-config/divers.js +++ b/content/.vuepress/sidebar-config/divers.js @@ -22,6 +22,14 @@ function getDivers() { 'freebox/freebox-videos' ] }, + { + title: 'IA', + collapsable: false, + sidebarDepth: 2, + children: [ + 'ia/ia' + ] + }, { title: 'Licences', collapsable: false, diff --git a/content/divers/ia/ia.md b/content/divers/ia/ia.md new file mode 100644 index 00000000..c9cbb722 --- /dev/null +++ b/content/divers/ia/ia.md @@ -0,0 +1,55 @@ +# IA + +## training + +[Yann LeCun about IA training on LinkedIn](https://www.linkedin.com/feed/update/urn:li:activity:7133567569684238336/) + +```text +Animals and humans get very smart very quickly with vastly smaller amounts of training data than current AI systems. + +Current LLMs are trained on text data that would take 20,000 years for a human to read. +And still, they haven't learned that if A is the same as B, then B is the same as A. +Humans get a lot smarter than that with comparatively little training data. +Even corvids, parrots, dogs, and octopuses get smarter than that very, very quickly, with only 2 billion neurons and a few trillion "parameters." + +My money is on new architectures that would learn as efficiently as animals and humans. +Using more text data (synthetic or not) is a temporary stopgap made necessary by the limitations of our current approaches. +The salvation is in using sensory data, e.g. video, which has higher bandwidth and more internal structure. + +The total amount of visual data seen by a 2 year-old is larger than the amount of data used to train LLMs, but still pretty reasonable. +2 years = 2x365x12x3600 or roughly 32 million seconds. +We have 2 million optical nerve fibers, carrying roughly ten bytes per second each. +That's a total of 6E14 bytes. The volume of data for LLM training is typically 1E13 tokens, which is about 2E13 bytes. +It's a factor of 30. + +Importantly, there is more to learn from video than from text because it is more redundant. +It tells you a lot about the structure of the world. +``` + +TLDR : Next gen IA needs to use video instead of text. + +To compare, see [this Jean-Baptiste Kempf (VLC) interview about how video works](https://www.youtube.com/watch?v=Kv4FzAdxclA). + +- an image is an array of pixel, each pixel is a color +- a video is a collection of images (something between 24 to 60 images per second) +- CODEC = compression decompression algorithm to send video. +- Video pixel by pixel is around 10 to 40 Gb/s +- the goal of CODEC is to divide 100, 200, ... 1K the bandwith used. +- dividing bandwith is destroying information +- the tech behind is based on how the human eyes behave, some colors are better seen then others, so we can delete some colors without downgrading the image seen. + +Each CODEC behave the same way, they delete data not seen by eyes, and they seek data blocks that are redundant image by image or between images. + +```text +MPEG-1 (1993) ---> MPEG-2 (1995) = DVD ---> DIVX (1999) (=MPEG-4) ---> H.264 (2003) ---> HEVC (2013) ---> VP9 (2013) +``` + +- H.264 is the most common CODEC used in the world, around 80% of usage. +- HEVC is crippled by royalties, it remains unused on the web instead of television, around 5%. +- VP9 created by Google, royalty free, opensource, Youtube and Facebook uses it. +- AV1 then AV2 created by the Open Media Alliance initiated by Google. +- AV1 is implemented by [Dav1d](https://github.com/videolan/dav1d), a VLC project, around 210K assembly LoC + 30K C LoC. This impl is widely used by GAFAM. + +## misc + +[Guide ChatGPT pour développeurs](https://gen-ai.fr/outils/generation-code/chatgpt-pour-developpeurs/) diff --git a/docs/404.html b/docs/404.html index 6c3f7cb0..19425bad 100644 --- a/docs/404.html +++ b/docs/404.html @@ -7,11 +7,11 @@ - + -

404

There's nothing here.
Take me home.
- +

404

How did we get here?
Take me home.
+ diff --git a/docs/assets/js/100.6a2b43d6.js b/docs/assets/js/100.6a2b43d6.js new file mode 100644 index 00000000..3fa4d2f2 --- /dev/null +++ b/docs/assets/js/100.6a2b43d6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{268:function(t,a,s){"use strict";s.r(a);var r=s(0),e=Object(r.a)({},(function(){var t=this,a=t._self._c;return a("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://github.com/angular-ui/ui-router",target:"_blank",rel:"noopener noreferrer"}},[t._v("ui-router"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://github.com/angular-ui/ui-router/wiki",target:"_blank",rel:"noopener noreferrer"}},[t._v("ui-router wiki"),a("OutboundLink")],1)])]),t._v(" "),t._m(2),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"http://cacodaemon.de/index.php?id=57",target:"_blank",rel:"noopener noreferrer"}},[t._v("Using nested views in AngularJS with UI-Router"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"https://medium.com/opinionated-angularjs/a2fcbf874a1c",target:"_blank",rel:"noopener noreferrer"}},[t._v("Advanced routing and resolves"),a("OutboundLink")],1)])]),t._v(" "),t._m(3),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"http://angular-ui.github.io/ui-router/sample/#/contacts",target:"_blank",rel:"noopener noreferrer"}},[t._v("ui-router sample"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"http://plnkr.co/edit/gmtcE2?p=preview",target:"_blank",rel:"noopener noreferrer"}},[t._v("plunkr"),a("OutboundLink")],1)])]),t._v(" "),t._m(4),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"http://stackoverflow.com/questions/14174394/how-can-i-change-params-in-url-with-angularjs",target:"_blank",rel:"noopener noreferrer"}},[t._v("add args in url"),a("OutboundLink")],1)])]),t._v(" "),t._m(5),t._m(6),t._v(" "),t._m(7),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"http://stackoverflow.com/questions/17376416/angularjs-how-to-clear-query-parameters-in-the-url",target:"_blank",rel:"noopener noreferrer"}},[t._v("clear args in url"),a("OutboundLink")],1)])]),t._v(" "),t._m(8)]),t._v(" "),t._m(9),t._m(10),t._v(" "),t._m(11),t._m(12),t._v(" "),t._m(13),t._v(" "),a("p",[a("a",{attrs:{href:"http://stackoverflow.com/questions/34386009/angular-ui-router-child-state-with-multiple-parent-states",target:"_blank",rel:"noopener noreferrer"}},[t._v("stackoverflow question"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/angular-ui/ui-router/issues/1072",target:"_blank",rel:"noopener noreferrer"}},[t._v("ui-router closed issue"),a("OutboundLink")],1)])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"angularjs-ui-routing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#angularjs-ui-routing"}},[this._v("#")]),this._v(" AngularJS - ui routing")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"ui-router"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ui-router"}},[this._v("#")]),this._v(" ui-router")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"tuto"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tuto"}},[this._v("#")]),this._v(" Tuto")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"examples"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[this._v("#")]),this._v(" Examples")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"url-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#url-management"}},[this._v("#")]),this._v(" url management")])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"language-javascript line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[t._v("$location"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'year'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" $scope"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("year"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br")])])},function(){var t=this._self._c;return t("ul",[t("li",[this._v("get specific arg")])])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"language-javascript line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[t._v("$location"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("year"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br")])])},function(){var t=this._self._c;return t("li",[t("p",[this._v("remove all args")])])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"language-javascript line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[t._v("$location"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("url")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("$location"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("path")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br")])])},function(){var t=this._self._c;return t("ul",[t("li",[this._v("remove a specific args")])])},function(){var t=this,a=t._self._c;return a("div",{staticClass:"language-javascript line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-javascript"}},[a("code",[t._v("$location"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'coords'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br")])])},function(){var t=this._self._c;return t("h2",{attrs:{id:"issues"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#issues"}},[this._v("#")]),this._v(" issues")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"multiples-parents-views-for-a-single-child-view"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#multiples-parents-views-for-a-single-child-view"}},[this._v("#")]),this._v(" Multiples parents views for a single child view")])}],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/100.44086804.js b/docs/assets/js/101.c2c7bbe7.js similarity index 96% rename from docs/assets/js/100.44086804.js rename to docs/assets/js/101.c2c7bbe7.js index fb991d68..9d3dce0c 100644 --- a/docs/assets/js/100.44086804.js +++ b/docs/assets/js/101.c2c7bbe7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{268:function(r,e,t){"use strict";t.r(e);var n=t(0),a=Object(n.a)({},(function(){var r=this,e=r._self._c;return e("div",{staticClass:"content"},[r._m(0),r._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"http://lostechies.com/gabrielschenker/2014/01/14/angularjspart-9-values-and-constants/",target:"_blank",rel:"noopener noreferrer"}},[r._v("value & constant"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://groups.google.com/forum/#!topic/angular/hVrkvaHGOfc",target:"_blank",rel:"noopener noreferrer"}},[r._v("service, factory & provider"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://gist.github.com/Mithrandir0x/3639232",target:"_blank",rel:"noopener noreferrer"}},[e("code",[r._v("gist.github.com")]),r._v(" : Difference between Service, Factory and Provider in AngularJS"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"http://www.angular-js.fr/les-services-angularjs/",target:"_blank",rel:"noopener noreferrer"}},[r._v("les-services-angularjs"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"http://www.angular-js.fr/astuce-angularjs-restreindre-resultats-ng-repeat/",target:"_blank",rel:"noopener noreferrer"}},[r._v("astuce-angularjs-restreindre-resultats-ng-repeat"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"http://angular-tips.com/blog/2013/08/understanding-service-types/",target:"_blank",rel:"noopener noreferrer"}},[r._v("understanding-service-types"),e("OutboundLink")],1)])])])}),[function(){var r=this._self._c;return r("h1",{attrs:{id:"angularjs-services"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#angularjs-services"}},[this._v("#")]),this._v(" AngularJS - services")])}],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{269:function(r,e,t){"use strict";t.r(e);var n=t(0),a=Object(n.a)({},(function(){var r=this,e=r._self._c;return e("div",{staticClass:"content"},[r._m(0),r._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"http://lostechies.com/gabrielschenker/2014/01/14/angularjspart-9-values-and-constants/",target:"_blank",rel:"noopener noreferrer"}},[r._v("value & constant"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://groups.google.com/forum/#!topic/angular/hVrkvaHGOfc",target:"_blank",rel:"noopener noreferrer"}},[r._v("service, factory & provider"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://gist.github.com/Mithrandir0x/3639232",target:"_blank",rel:"noopener noreferrer"}},[e("code",[r._v("gist.github.com")]),r._v(" : Difference between Service, Factory and Provider in AngularJS"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"http://www.angular-js.fr/les-services-angularjs/",target:"_blank",rel:"noopener noreferrer"}},[r._v("les-services-angularjs"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"http://www.angular-js.fr/astuce-angularjs-restreindre-resultats-ng-repeat/",target:"_blank",rel:"noopener noreferrer"}},[r._v("astuce-angularjs-restreindre-resultats-ng-repeat"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"http://angular-tips.com/blog/2013/08/understanding-service-types/",target:"_blank",rel:"noopener noreferrer"}},[r._v("understanding-service-types"),e("OutboundLink")],1)])])])}),[function(){var r=this._self._c;return r("h1",{attrs:{id:"angularjs-services"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#angularjs-services"}},[this._v("#")]),this._v(" AngularJS - services")])}],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/101.4da4f53c.js b/docs/assets/js/102.339e4904.js similarity index 98% rename from docs/assets/js/101.4da4f53c.js rename to docs/assets/js/102.339e4904.js index 1516169f..41546b5d 100644 --- a/docs/assets/js/101.4da4f53c.js +++ b/docs/assets/js/102.339e4904.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{269:function(e,t,a){"use strict";a.r(t);var r=a(0),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("div",{staticClass:"content"},[e._m(0),e._v(" "),t("h2",{attrs:{id:"templatecache"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#templatecache"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://code.angularjs.org/1.4.8/docs/api/ng/service/$templateCache",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("$templateCache")]),t("OutboundLink")],1)]),e._v(" "),e._m(1),e._v(" "),e._m(2),e._v(" "),t("p",[e._v("Une bonne pratique consiste à populer $templateCache au build de l'application via un module gulp ("),t("a",{attrs:{href:"https://github.com/miickel/gulp-angular-templatecache",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("gulp-angular-templatecache")]),t("OutboundLink")],1),e._v(").\nAinsi il n'y aura aucun accès réseau pour récupérer les templates.")]),e._v(" "),e._m(3),e._v(" "),e._m(4),e._v(" "),e._m(5),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://thinkster.io/templatecache-tutorial",target:"_blank",rel:"noopener noreferrer"}},[e._v("templatecache-tutorial : thinkster.io"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://blog.logentries.com/2015/03/template-caching-in-angular-how-to-avoid-the-storm/",target:"_blank",rel:"noopener noreferrer"}},[e._v("template-caching-in-angular-how-to-avoid-the-storm"),t("OutboundLink")],1)])])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"angularjs-templatecache"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#angularjs-templatecache"}},[this._v("#")]),this._v(" AngularJS - "),e("code",[this._v("$templateCache")])])},function(){var e=this._self._c;return e("p",[this._v("Quand angular voit un templateUrl dans une route ou une directive, il va requêter le serveur pour retrouver le fichier html.\nUne fois qu'il l'a récupéré, il place ce template sous forme de string dans le service "),e("code",[this._v("$templateCache")]),this._v(".\nChaque fois suivante ou angular aura besoin d'accéder à ce template, il va recharger le template depuis "),e("code",[this._v("$templateCache")]),this._v(".\nCe qui évite de multiples connexions réseau inutiles.")])},function(){var e=this._self._c;return e("h2",{attrs:{id:"bonne-pratique"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bonne-pratique"}},[this._v("#")]),this._v(" Bonne pratique")])},function(){var e=this._self._c;return e("h2",{attrs:{id:"implementation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[this._v("#")]),this._v(" Implémentation")])},function(){var e=this._self._c;return e("p",[this._v("Concrètement cette tâche gulp va générer un fichier js qui implémente un run du module principal de la webapp.\nCe run injectera "),e("code",[this._v("$templateCache")]),this._v(".\nPour chaque template trouvé dans le source de la webapp, un call à "),e("code",[this._v("$templateCache.put(, )")]),this._v(" sera effectué.")])},function(){var e=this._self._c;return e("h2",{attrs:{id:"lectures-sur-le-sujet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lectures-sur-le-sujet"}},[this._v("#")]),this._v(" Lectures sur le sujet")])}],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{270:function(e,t,a){"use strict";a.r(t);var r=a(0),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("div",{staticClass:"content"},[e._m(0),e._v(" "),t("h2",{attrs:{id:"templatecache"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#templatecache"}},[e._v("#")]),e._v(" "),t("a",{attrs:{href:"https://code.angularjs.org/1.4.8/docs/api/ng/service/$templateCache",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("$templateCache")]),t("OutboundLink")],1)]),e._v(" "),e._m(1),e._v(" "),e._m(2),e._v(" "),t("p",[e._v("Une bonne pratique consiste à populer $templateCache au build de l'application via un module gulp ("),t("a",{attrs:{href:"https://github.com/miickel/gulp-angular-templatecache",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("gulp-angular-templatecache")]),t("OutboundLink")],1),e._v(").\nAinsi il n'y aura aucun accès réseau pour récupérer les templates.")]),e._v(" "),e._m(3),e._v(" "),e._m(4),e._v(" "),e._m(5),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://thinkster.io/templatecache-tutorial",target:"_blank",rel:"noopener noreferrer"}},[e._v("templatecache-tutorial : thinkster.io"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://blog.logentries.com/2015/03/template-caching-in-angular-how-to-avoid-the-storm/",target:"_blank",rel:"noopener noreferrer"}},[e._v("template-caching-in-angular-how-to-avoid-the-storm"),t("OutboundLink")],1)])])])}),[function(){var e=this._self._c;return e("h1",{attrs:{id:"angularjs-templatecache"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#angularjs-templatecache"}},[this._v("#")]),this._v(" AngularJS - "),e("code",[this._v("$templateCache")])])},function(){var e=this._self._c;return e("p",[this._v("Quand angular voit un templateUrl dans une route ou une directive, il va requêter le serveur pour retrouver le fichier html.\nUne fois qu'il l'a récupéré, il place ce template sous forme de string dans le service "),e("code",[this._v("$templateCache")]),this._v(".\nChaque fois suivante ou angular aura besoin d'accéder à ce template, il va recharger le template depuis "),e("code",[this._v("$templateCache")]),this._v(".\nCe qui évite de multiples connexions réseau inutiles.")])},function(){var e=this._self._c;return e("h2",{attrs:{id:"bonne-pratique"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bonne-pratique"}},[this._v("#")]),this._v(" Bonne pratique")])},function(){var e=this._self._c;return e("h2",{attrs:{id:"implementation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[this._v("#")]),this._v(" Implémentation")])},function(){var e=this._self._c;return e("p",[this._v("Concrètement cette tâche gulp va générer un fichier js qui implémente un run du module principal de la webapp.\nCe run injectera "),e("code",[this._v("$templateCache")]),this._v(".\nPour chaque template trouvé dans le source de la webapp, un call à "),e("code",[this._v("$templateCache.put(, )")]),this._v(" sera effectué.")])},function(){var e=this._self._c;return e("h2",{attrs:{id:"lectures-sur-le-sujet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lectures-sur-le-sujet"}},[this._v("#")]),this._v(" Lectures sur le sujet")])}],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/102.4dfbc78f.js b/docs/assets/js/103.4e268280.js similarity index 99% rename from docs/assets/js/102.4dfbc78f.js rename to docs/assets/js/103.4e268280.js index 5b885266..95a2c5f1 100644 --- a/docs/assets/js/102.4dfbc78f.js +++ b/docs/assets/js/103.4e268280.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{270:function(t,s,n){"use strict";n.r(s);var a=n(0),e=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://karma-runner.github.io/0.13/index.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("karma runner"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://jasmine.github.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("jasmine"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://phantomjs.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("PhantomJS"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/matthias-schuetz/karma-htmlfile-reporter",target:"_blank",rel:"noopener noreferrer"}},[t._v("karma-htmlfile-reporter"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/karma-runner/karma-junit-reporter",target:"_blank",rel:"noopener noreferrer"}},[t._v("karma-junit-reporter"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://karma-runner.github.io/0.12/plus/jenkins.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("karma & jenkins"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://www.mockaroo.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("mockaroo : online mock file generator"),s("OutboundLink")],1)])]),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://angular-tips.com/blog/categories/unit-test/",target:"_blank",rel:"noopener noreferrer"}},[t._v("angular-tips.com : unit-test"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://blog.xebia.fr/2013/03/21/introduction-aux-tests-unitaires-en-javascript/",target:"_blank",rel:"noopener noreferrer"}},[t._v("introduction-aux-tests-unitaires-en-JavaScript"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://blog.xebia.fr/2008/04/11/les-10-commandements-des-tests-unitaires/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Les 10 commandements des tests unitaires"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://blog.soat.fr/2013/11/10-trucs-infaillibles-pour-rater-ses-tests-unitaires-en-toutes-circonstances-22/",target:"_blank",rel:"noopener noreferrer"}},[t._v("rater-ses-tests-unitaires-en-toutes-circonstances"),s("OutboundLink")],1)])]),t._v(" "),t._m(4),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/kensho/ng-describe",target:"_blank",rel:"noopener noreferrer"}},[t._v("ng-describe"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("Avec ng-describe, quand on mock une constante utilisée pour stocker une lib externe ( cf "),s("a",{attrs:{href:"https://github.com/johnpapa/angular-styleguide/tree/master/a1#style-y240",target:"_blank",rel:"noopener noreferrer"}},[t._v("Y240"),s("OutboundLink")],1),t._v(" ), mocker la constante ne suffit pas, il faut mocker chaque fonction utilisée en lui réattribuant la fonction initiale.\nOn injecte par IIFE la vrai lib donc on réattribue au mock les fonctions utilisées. Ou pas.")])]),t._v(" "),s("p",[t._v("Articles de l'auteur de la lib :")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://glebbahmutov.com/blog/1-2-3-tested/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Unit testing AngularJS code in record time using ng-describe : glebbahmutov.com/"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://slides.com/bahmutov/ng-describe#/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slides AngularJS NYC meetup in August 2015"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://glebbahmutov.com/blog/testing-angularjs-under-node/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testing-angularjs-under-node : glebbahmutov.com/"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://glebbahmutov.com/blog/testing-angular-async-stuff/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testing-angular-async-stuff: glebbahmutov.com"),s("OutboundLink")],1)])]),t._v(" "),t._m(5),t._v(" "),s("p",[s("a",{attrs:{href:"http://stackoverflow.com/questions/8108461/how-can-i-get-webstorm-to-recognize-jasmine-methods",target:"_blank",rel:"noopener noreferrer"}},[t._v("stackoverflow - how-can-i-get-webstorm-to-recognize-jasmine-methods"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("a",{attrs:{href:"http://stackoverflow.com/a/36864225",target:"_blank",rel:"noopener noreferrer"}},[t._v("stackoverflow - Selection jasmine definitely typed"),s("OutboundLink")],1)]),t._v(" "),t._m(6),t._v(" "),t._m(7),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/Puigcerber/angular-unit-testing",target:"_blank",rel:"noopener noreferrer"}},[t._v("Puigcerber/angular-unit-testing : "),s("code",[t._v("github.com")]),s("OutboundLink")],1)])]),t._v(" "),t._m(8),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/cironunes/angular-testing-recipes",target:"_blank",rel:"noopener noreferrer"}},[t._v("cironunes/angular-testing-recipes : "),s("code",[t._v("github.com")]),s("OutboundLink")],1)])]),t._v(" "),t._m(9),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://www.sitepoint.com/unit-testing-angularjs-services-controllers-providers/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Unit Testing in AngularJS: Services, Controllers & Providers : sitepoint.com"),s("OutboundLink")],1)])]),t._v(" "),s("blockquote",[s("p",[s("a",{attrs:{href:"https://github.com/sitepoint-editors/angular-js-unit-testing-services-controllers-providers",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub repository"),s("OutboundLink")],1)])]),t._v(" "),t._m(10),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://blog.occitech.fr/2013/10/les-tests-angularjs-le-guide-de-a-a-z-partie-1-les-tests-unitaires/",target:"_blank",rel:"noopener noreferrer"}},[t._v("les-tests-angularjs-le-guide-de-a-a-z"),s("OutboundLink")],1)])]),t._v(" "),t._m(11),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://stackoverflow.com/questions/13013772/how-do-i-test-an-angularjs-service-with-jasmine",target:"_blank",rel:"noopener noreferrer"}},[t._v("how-do-i-test-an-angularjs-service-with-jasmine"),s("OutboundLink")],1)])]),t._v(" "),t._m(12),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://www.sitepoint.com/angular-testing-tips-testing-directives/",target:"_blank",rel:"noopener noreferrer"}},[t._v("angular-testing-tips-testing-directives"),s("OutboundLink")],1)])]),t._v(" "),t._m(13),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://stackoverflow.com/questions/17554727/mocking-angular-module-dependencies-in-jasmine-unit-tests",target:"_blank",rel:"noopener noreferrer"}},[t._v("mocking-angular-module-dependencies"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://stackoverflow.com/questions/14773269/injecting-a-mock-into-an-angularjs-service/18756347#18756347",target:"_blank",rel:"noopener noreferrer"}},[t._v("injecting-a-mock-into-an-angularjs-service"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://www.sitepoint.com/mocking-dependencies-angularjs-tests/",target:"_blank",rel:"noopener noreferrer"}},[t._v("divers"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://blog.softit.fr/post/dummy-fake-stub-mock-et-spy-les-tests-unitaires-avec-l-aide-de-moq",target:"_blank",rel:"noopener noreferrer"}},[t._v("Dummy, Fake, Stub, Mock et Spy, les tests unitaires avec l'aide de Moq"),s("OutboundLink")],1)])]),t._v(" "),t._m(14),t._v(" "),t._m(15),s("ul",[t._m(16),t._v(" "),s("li",[s("p",[t._v("use "),s("code",[t._v("toThrowError(exceptionMsg)")]),t._v(" "),s("a",{attrs:{href:"http://jasmine.github.io/2.3/introduction.html#section-Included_Matchers",target:"_blank",rel:"noopener noreferrer"}},[t._v("matcher from Jasmine"),s("OutboundLink")],1)])]),t._v(" "),t._m(17)]),t._v(" "),t._m(18),t._m(19),t._v(" "),t._m(20),t._m(21),t._m(22),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://blog.xebia.com/2014/03/08/angularjs-e2e-testing-using-ngmocke2e/",target:"_blank",rel:"noopener noreferrer"}},[t._v("angularjs-e2e-testing-using-ngmocke2e"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://www.protractortest.org/#/locators",target:"_blank",rel:"noopener noreferrer"}},[t._v("locators protractors"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://docs.google.com/presentation/d/1B6manhG0zEXkC-H-tPo2vwU06JhL8w9-XCF9oehXzAQ/edit?pli=1#slide=id.g2bc490733_00",target:"_blank",rel:"noopener noreferrer"}},[t._v("page objects"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/CarmenPopoviciu/protractor-styleguide",target:"_blank",rel:"noopener noreferrer"}},[t._v("protractor-styleguide"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://www.exratione.com/2015/02/phantomjs-has-many-uses-but-function-testing-isnt-one-of-them/",target:"_blank",rel:"noopener noreferrer"}},[t._v("phantomjs not good for e2e"),s("OutboundLink")],1)])]),t._v(" "),t._m(23),t._v(" "),s("p",[t._v("ATTENTION CHROME & FIREFOX, need dl update de webdriver.")]),t._v(" "),t._m(24),t._v(" "),s("ul",[s("li",[s("code",[t._v("ignore_ssl")]),t._v(" for protractor "),s("a",{attrs:{href:"https://github.com/angular/protractor/issues/1847#issuecomment-76023932",target:"_blank",rel:"noopener noreferrer"}},[t._v("issue 1847"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("li",[t._v("proxy config + ignore_ssl for webdriver-manager, "),s("a",{attrs:{href:"https://github.com/angular/protractor/issues/1477",target:"_blank",rel:"noopener noreferrer"}},[t._v("issue 1477"),s("OutboundLink")],1),t._v(".")])]),t._v(" "),s("p",[t._v("ATTENTION IE :\npour exécution sur IE "),s("a",{attrs:{href:"http://selenium-release.storage.googleapis.com/index.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("need drivers spécifiques"),s("OutboundLink")],1),t._v(".\n(dépendent de la plateforme, sur win x64 : "),s("code",[t._v("IEDriverServer_x64_2.47.0.zip")]),t._v(")\nConfig à faire ensuite dans "),s("code",[t._v("protractor.conf.js")]),t._v(" pour lancer sur ce server (géré au niveau du generator)")]),t._v(" "),t._m(25),t._v(" "),t._m(26),t._m(27),t._v(" "),t._m(28),s("p",[t._v("IE nécessite un driver spécifique et une config spécifique.\nDans "),s("code",[t._v("gulp-protractor")]),t._v(" les drivers webdriver de IE ne sont pas DL, cf "),s("a",{attrs:{href:"https://github.com/mllrsohn/gulp-protractor/issues/38",target:"_blank",rel:"noopener noreferrer"}},[t._v("issue 38"),s("OutboundLink")],1),t._v("\nTélécharger les drivers IE manuellement "),s("a",{attrs:{href:"http://selenium-release.storage.googleapis.com/index.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("ici"),s("OutboundLink")],1),t._v(".\nDoc du driver "),s("a",{attrs:{href:"https://code.google.com/p/selenium/wiki/InternetExplorerDriver",target:"_blank",rel:"noopener noreferrer"}},[t._v("ici"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("p",[t._v("Installer l'exe dans la partie exécutable du disque dur.")]),t._v(" "),s("p",[t._v("Ajouter de la config à protractor.conf.js :")]),t._v(" "),t._m(29),t._m(30),t._v(" "),t._m(31),t._m(32),t._v(" "),t._m(33),s("p",[t._v("Nécessite que jasmineNodeOpts.isVerbose soit à true.")]),t._v(" "),t._m(34),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/larrymyers/jasmine-reporters#protractor",target:"_blank",rel:"noopener noreferrer"}},[t._v("Jasmine reporter"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("Discussion dans les "),s("a",{attrs:{href:"https://github.com/angular/protractor/issues/60",target:"_blank",rel:"noopener noreferrer"}},[t._v("issues de protractor"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("installation :")]),t._v(" "),t._m(35),t._m(36),t._v(" "),t._m(37),t._m(38),t._v(" "),s("p",[t._v("Le rapport est un fichier au format xml qui nécessite une mise en forme.\n"),s("a",{attrs:{href:"https://github.com/niedbalski/nosetest-xunit-xslt/blob/master/nosetests.xslt",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cette xslt"),s("OutboundLink")],1),t._v(" peut être utilisée pour\nmettre en forme le xml d'output mais manque un moyen pour linker automatiquement le xml de sortie avec la xsl. (pas prévu par le module)")])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"angularjs-testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#angularjs-testing"}},[this._v("#")]),this._v(" AngularJS - testing")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"tools"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tools"}},[this._v("#")]),this._v(" tools")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"unit-testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unit-testing"}},[this._v("#")]),this._v(" unit testing")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"best-articles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#best-articles"}},[this._v("#")]),this._v(" best articles")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"best-lib-ng-describe"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#best-lib-ng-describe"}},[this._v("#")]),this._v(" best lib (ng-describe)")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"integration-jasmine-dans-webstorm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#integration-jasmine-dans-webstorm"}},[this._v("#")]),this._v(" intégration jasmine dans webstorm")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"examples"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[this._v("#")]),this._v(" examples")])},function(){var t=this._self._c;return t("h4",{attrs:{id:"repos-examples"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#repos-examples"}},[this._v("#")]),this._v(" repos examples")])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("Guidelines and patterns for unit testing AngularJS apps.")])])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("Unit and e2e testing recipes for AngularJS")])])},function(){var t=this._self._c;return t("h4",{attrs:{id:"tests-avec-http"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tests-avec-http"}},[this._v("#")]),this._v(" tests avec $http")])},function(){var t=this._self._c;return t("h4",{attrs:{id:"tests-de-services"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tests-de-services"}},[this._v("#")]),this._v(" tests de services")])},function(){var t=this._self._c;return t("h4",{attrs:{id:"tests-de-directives"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tests-de-directives"}},[this._v("#")]),this._v(" tests de directives")])},function(){var t=this._self._c;return t("h4",{attrs:{id:"dependencies-mocking"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dependencies-mocking"}},[this._v("#")]),this._v(" Dependencies mocking")])},function(){var t=this._self._c;return t("h4",{attrs:{id:"testing-a-throw-exception"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing-a-throw-exception"}},[this._v("#")]),this._v(" Testing a throw exception")])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'throws exception when args are undefined or null'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("inject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("HistoryLRindexService")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("HistoryLRindexService"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addIndexElement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'toto'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toThrowError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'HistoryLRindexValueFactory.addIndexElement(key, data) error : key null or undefined'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br")])])},function(){var t=this._self._c;return t("li",[t("p",[this._v("use anonymous function for the call")])])},function(){var t=this._self._c;return t("li",[t("p",[this._v("your impl should be something like that :")])])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("throw")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'HistoryLRindexValueFactory.addIndexElement(key, data) error : key null or undefined'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])])},function(){var t=this._self._c;return t("h4",{attrs:{id:"testing-a-directive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing-a-directive"}},[this._v("#")]),this._v(" Testing a directive")])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'use strict'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n angular\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("module")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'app'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("directive")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'exampleDirective'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" exampleDirective"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("exampleDirective")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("restrict")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'E'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("scope")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("stroke")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("fill")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'\'')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'\'')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("''")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("link")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" attrs")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("calculateValues")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" canvasSize "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" size "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2.5")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("canvas")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" canvasSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("radius")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("center")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" canvasSize "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n attrs"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("$observe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'size'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("newSize")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("calculateValues")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseInt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("newSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br"),s("span",{staticClass:"line-number"},[t._v("21")]),s("br"),s("span",{staticClass:"line-number"},[t._v("22")]),s("br"),s("span",{staticClass:"line-number"},[t._v("23")]),s("br"),s("span",{staticClass:"line-number"},[t._v("24")]),s("br"),s("span",{staticClass:"line-number"},[t._v("25")]),s("br"),s("span",{staticClass:"line-number"},[t._v("26")]),s("br"),s("span",{staticClass:"line-number"},[t._v("27")]),s("br"),s("span",{staticClass:"line-number"},[t._v("28")]),s("br"),s("span",{staticClass:"line-number"},[t._v("29")]),s("br"),s("span",{staticClass:"line-number"},[t._v("30")]),s("br"),s("span",{staticClass:"line-number"},[t._v("31")]),s("br"),s("span",{staticClass:"line-number"},[t._v("32")]),s("br"),s("span",{staticClass:"line-number"},[t._v("33")]),s("br"),s("span",{staticClass:"line-number"},[t._v("34")]),s("br"),s("span",{staticClass:"line-number"},[t._v("35")]),s("br"),s("span",{staticClass:"line-number"},[t._v("36")]),s("br"),s("span",{staticClass:"line-number"},[t._v("37")]),s("br"),s("span",{staticClass:"line-number"},[t._v("38")]),s("br")])])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'use strict'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("describe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'directive: example'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("beforeEach")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("module")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'app'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("beforeEach")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("inject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("$rootScope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" $compile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n scope "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" $rootScope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("$"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n element "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'\'')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("size "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n element "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("$compile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("$digest")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("describe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'with the first given value'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should compute the size to create other values"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" isolated "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isolateScope")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("canvas"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("250")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("center"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("125")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("radius"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should contain a svg tag with proper size"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'svg'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'height'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'250'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'svg'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'width'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'250'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should contain a circle with proper attributes"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'cx'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'125'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'cy'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'125'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'r'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'100'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'stroke'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'black'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'fill'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'blue'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("describe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'when changing the initial value to a different one'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("beforeEach")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("size "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("160")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("$digest")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should compute the size to create other values"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" isolated "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isolateScope")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("canvas"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("400")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("center"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("200")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("radius"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("160")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should contain a svg tag with proper size"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'svg'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'height'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'400'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'svg'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'width'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'400'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should contain a circle with proper attributes"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'cx'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'200'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'cy'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'200'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'r'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'160'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'stroke'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'black'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'fill'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'blue'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br"),s("span",{staticClass:"line-number"},[t._v("21")]),s("br"),s("span",{staticClass:"line-number"},[t._v("22")]),s("br"),s("span",{staticClass:"line-number"},[t._v("23")]),s("br"),s("span",{staticClass:"line-number"},[t._v("24")]),s("br"),s("span",{staticClass:"line-number"},[t._v("25")]),s("br"),s("span",{staticClass:"line-number"},[t._v("26")]),s("br"),s("span",{staticClass:"line-number"},[t._v("27")]),s("br"),s("span",{staticClass:"line-number"},[t._v("28")]),s("br"),s("span",{staticClass:"line-number"},[t._v("29")]),s("br"),s("span",{staticClass:"line-number"},[t._v("30")]),s("br"),s("span",{staticClass:"line-number"},[t._v("31")]),s("br"),s("span",{staticClass:"line-number"},[t._v("32")]),s("br"),s("span",{staticClass:"line-number"},[t._v("33")]),s("br"),s("span",{staticClass:"line-number"},[t._v("34")]),s("br"),s("span",{staticClass:"line-number"},[t._v("35")]),s("br"),s("span",{staticClass:"line-number"},[t._v("36")]),s("br"),s("span",{staticClass:"line-number"},[t._v("37")]),s("br"),s("span",{staticClass:"line-number"},[t._v("38")]),s("br"),s("span",{staticClass:"line-number"},[t._v("39")]),s("br"),s("span",{staticClass:"line-number"},[t._v("40")]),s("br"),s("span",{staticClass:"line-number"},[t._v("41")]),s("br"),s("span",{staticClass:"line-number"},[t._v("42")]),s("br"),s("span",{staticClass:"line-number"},[t._v("43")]),s("br"),s("span",{staticClass:"line-number"},[t._v("44")]),s("br"),s("span",{staticClass:"line-number"},[t._v("45")]),s("br"),s("span",{staticClass:"line-number"},[t._v("46")]),s("br"),s("span",{staticClass:"line-number"},[t._v("47")]),s("br"),s("span",{staticClass:"line-number"},[t._v("48")]),s("br"),s("span",{staticClass:"line-number"},[t._v("49")]),s("br"),s("span",{staticClass:"line-number"},[t._v("50")]),s("br"),s("span",{staticClass:"line-number"},[t._v("51")]),s("br"),s("span",{staticClass:"line-number"},[t._v("52")]),s("br"),s("span",{staticClass:"line-number"},[t._v("53")]),s("br"),s("span",{staticClass:"line-number"},[t._v("54")]),s("br"),s("span",{staticClass:"line-number"},[t._v("55")]),s("br"),s("span",{staticClass:"line-number"},[t._v("56")]),s("br"),s("span",{staticClass:"line-number"},[t._v("57")]),s("br"),s("span",{staticClass:"line-number"},[t._v("58")]),s("br"),s("span",{staticClass:"line-number"},[t._v("59")]),s("br"),s("span",{staticClass:"line-number"},[t._v("60")]),s("br"),s("span",{staticClass:"line-number"},[t._v("61")]),s("br"),s("span",{staticClass:"line-number"},[t._v("62")]),s("br"),s("span",{staticClass:"line-number"},[t._v("63")]),s("br"),s("span",{staticClass:"line-number"},[t._v("64")]),s("br"),s("span",{staticClass:"line-number"},[t._v("65")]),s("br"),s("span",{staticClass:"line-number"},[t._v("66")]),s("br"),s("span",{staticClass:"line-number"},[t._v("67")]),s("br"),s("span",{staticClass:"line-number"},[t._v("68")]),s("br"),s("span",{staticClass:"line-number"},[t._v("69")]),s("br"),s("span",{staticClass:"line-number"},[t._v("70")]),s("br"),s("span",{staticClass:"line-number"},[t._v("71")]),s("br"),s("span",{staticClass:"line-number"},[t._v("72")]),s("br"),s("span",{staticClass:"line-number"},[t._v("73")]),s("br")])])},function(){var t=this._self._c;return t("h2",{attrs:{id:"e2e-testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#e2e-testing"}},[this._v("#")]),this._v(" e2e testing")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"installation-des-drivers-pour-webdrivers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installation-des-drivers-pour-webdrivers"}},[this._v("#")]),this._v(" installation des drivers pour webdrivers")])},function(){var t=this,s=t._self._c;return s("p",[t._v("Derrière un proxy il faut config envvar "),s("code",[t._v("HTTP_PROXY")]),t._v(" & "),s("code",[t._v("HTTPS_PROXY")]),t._v(" sur fiddler ("),s("code",[t._v("http://localhost:8888")]),t._v(")\net set "),s("code",[t._v("ignore_ssl")]),t._v(" à true si le magasin de certificat du réseau est fucké. Pour le moment on sait le faire que en dur dans le source de webdriver-manager ( "),s("code",[t._v(".\\node_modules\\gulp-protractor\\node_modules\\protractor\\bin\\webdriver-manager")]),t._v(" )\nligne 93 ("),s("code",[t._v("default('ignore_ssl', false)")]),t._v(".)")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"lancer-la-suite-de-test-sur-chaque-browser"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lancer-la-suite-de-test-sur-chaque-browser"}},[this._v("#")]),this._v(" lancer la suite de test sur chaque browser")])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("multiCapabilities")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'firefox'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'chrome'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ie'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br")])])},function(){var t=this._self._c;return t("h3",{attrs:{id:"tests-pour-ie-fail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tests-pour-ie-fail"}},[this._v("#")]),this._v(" tests pour ie fail")])},function(){var t=this._self._c;return t("div",{staticClass:"language-text line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[this._v("UnknownError: The path to the driver executable must be set by the webdriver.ie.driver system property; for more information, see http://code.google.com/p/selenium/wiki/InternetExplorerDriver. The latest version can be downloaded from http://selenium-release.storage.googleapis.com/index.html\n")])]),this._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[this._v("1")]),t("br")])])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("seleniumArgs")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'-Dwebdriver.ie.driver=C:\\\\Produits\\\\dev\\\\ws-js\\\\webdriver-ie\\\\IEDriverServer.exe'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])])},function(){var t=this._self._c;return t("p",[this._v("Ajouter la capability à la config de "),t("code",[this._v("protractor.conf.js")]),this._v(" :")])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("multiCapabilities")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'firefox'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'chrome'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'internet explorer'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'platform'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ANY'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'version'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'11'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br")])])},function(){var t=this._self._c;return t("h3",{attrs:{id:"exporter-les-resultats"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#exporter-les-resultats"}},[this._v("#")]),this._v(" exporter les résultats")])},function(){var t=this._self._c;return t("div",{staticClass:"language-javascript line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-javascript"}},[t("code",[t("span",{pre:!0,attrs:{class:"token literal-property property"}},[this._v("resultJsonOutputFile")]),t("span",{pre:!0,attrs:{class:"token operator"}},[this._v(":")]),this._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[this._v("'e2e.results.json'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[this._v(",")]),this._v("\n")])]),this._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[this._v("1")]),t("br")])])},function(){var t=this._self._c;return t("h3",{attrs:{id:"reporter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reporter"}},[this._v("#")]),this._v(" reporter")])},function(){var t=this._self._c;return t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[this._v("npm")]),this._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[this._v("install")]),this._v(" jasmine-reporters@^2.0.7 --save-dev\n")])]),this._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[this._v("1")]),t("br")])])},function(){var t=this._self._c;return t("p",[this._v("Dans "),t("code",[this._v("protractor.conf.js")]),this._v(", ajouter :")])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" jasmineReporters "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'jasmine-reporters'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexports"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("config "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("framework")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'jasmine2'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("onPrepare")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n jasmine"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEnv")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addReporter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("jasmineReporters"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("JUnitXmlReporter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("savePath")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" paths"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("e2e "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/reports/'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("consolidateAll")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("filePrefix")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'e2e.chrome.results.'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_currentTimestampToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Options to be passed to Jasmine-node.")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("jasmineNodeOpts")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("showColors")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("defaultTimeoutInterval")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("60000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("print")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br")])])},function(){var t=this._self._c;return t("p",[this._v("Va créer le rapport dans "),t("code",[this._v("../e2e/reports/")])])}],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{271:function(t,s,n){"use strict";n.r(s);var a=n(0),e=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("div",{staticClass:"content"},[t._m(0),t._v(" "),t._m(1),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://karma-runner.github.io/0.13/index.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("karma runner"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://jasmine.github.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("jasmine"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://phantomjs.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("PhantomJS"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/matthias-schuetz/karma-htmlfile-reporter",target:"_blank",rel:"noopener noreferrer"}},[t._v("karma-htmlfile-reporter"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/karma-runner/karma-junit-reporter",target:"_blank",rel:"noopener noreferrer"}},[t._v("karma-junit-reporter"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://karma-runner.github.io/0.12/plus/jenkins.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("karma & jenkins"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://www.mockaroo.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("mockaroo : online mock file generator"),s("OutboundLink")],1)])]),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://angular-tips.com/blog/categories/unit-test/",target:"_blank",rel:"noopener noreferrer"}},[t._v("angular-tips.com : unit-test"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://blog.xebia.fr/2013/03/21/introduction-aux-tests-unitaires-en-javascript/",target:"_blank",rel:"noopener noreferrer"}},[t._v("introduction-aux-tests-unitaires-en-JavaScript"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://blog.xebia.fr/2008/04/11/les-10-commandements-des-tests-unitaires/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Les 10 commandements des tests unitaires"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://blog.soat.fr/2013/11/10-trucs-infaillibles-pour-rater-ses-tests-unitaires-en-toutes-circonstances-22/",target:"_blank",rel:"noopener noreferrer"}},[t._v("rater-ses-tests-unitaires-en-toutes-circonstances"),s("OutboundLink")],1)])]),t._v(" "),t._m(4),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/kensho/ng-describe",target:"_blank",rel:"noopener noreferrer"}},[t._v("ng-describe"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("Avec ng-describe, quand on mock une constante utilisée pour stocker une lib externe ( cf "),s("a",{attrs:{href:"https://github.com/johnpapa/angular-styleguide/tree/master/a1#style-y240",target:"_blank",rel:"noopener noreferrer"}},[t._v("Y240"),s("OutboundLink")],1),t._v(" ), mocker la constante ne suffit pas, il faut mocker chaque fonction utilisée en lui réattribuant la fonction initiale.\nOn injecte par IIFE la vrai lib donc on réattribue au mock les fonctions utilisées. Ou pas.")])]),t._v(" "),s("p",[t._v("Articles de l'auteur de la lib :")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://glebbahmutov.com/blog/1-2-3-tested/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Unit testing AngularJS code in record time using ng-describe : glebbahmutov.com/"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://slides.com/bahmutov/ng-describe#/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Slides AngularJS NYC meetup in August 2015"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://glebbahmutov.com/blog/testing-angularjs-under-node/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testing-angularjs-under-node : glebbahmutov.com/"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://glebbahmutov.com/blog/testing-angular-async-stuff/",target:"_blank",rel:"noopener noreferrer"}},[t._v("testing-angular-async-stuff: glebbahmutov.com"),s("OutboundLink")],1)])]),t._v(" "),t._m(5),t._v(" "),s("p",[s("a",{attrs:{href:"http://stackoverflow.com/questions/8108461/how-can-i-get-webstorm-to-recognize-jasmine-methods",target:"_blank",rel:"noopener noreferrer"}},[t._v("stackoverflow - how-can-i-get-webstorm-to-recognize-jasmine-methods"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("a",{attrs:{href:"http://stackoverflow.com/a/36864225",target:"_blank",rel:"noopener noreferrer"}},[t._v("stackoverflow - Selection jasmine definitely typed"),s("OutboundLink")],1)]),t._v(" "),t._m(6),t._v(" "),t._m(7),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/Puigcerber/angular-unit-testing",target:"_blank",rel:"noopener noreferrer"}},[t._v("Puigcerber/angular-unit-testing : "),s("code",[t._v("github.com")]),s("OutboundLink")],1)])]),t._v(" "),t._m(8),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/cironunes/angular-testing-recipes",target:"_blank",rel:"noopener noreferrer"}},[t._v("cironunes/angular-testing-recipes : "),s("code",[t._v("github.com")]),s("OutboundLink")],1)])]),t._v(" "),t._m(9),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://www.sitepoint.com/unit-testing-angularjs-services-controllers-providers/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Unit Testing in AngularJS: Services, Controllers & Providers : sitepoint.com"),s("OutboundLink")],1)])]),t._v(" "),s("blockquote",[s("p",[s("a",{attrs:{href:"https://github.com/sitepoint-editors/angular-js-unit-testing-services-controllers-providers",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub repository"),s("OutboundLink")],1)])]),t._v(" "),t._m(10),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://blog.occitech.fr/2013/10/les-tests-angularjs-le-guide-de-a-a-z-partie-1-les-tests-unitaires/",target:"_blank",rel:"noopener noreferrer"}},[t._v("les-tests-angularjs-le-guide-de-a-a-z"),s("OutboundLink")],1)])]),t._v(" "),t._m(11),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://stackoverflow.com/questions/13013772/how-do-i-test-an-angularjs-service-with-jasmine",target:"_blank",rel:"noopener noreferrer"}},[t._v("how-do-i-test-an-angularjs-service-with-jasmine"),s("OutboundLink")],1)])]),t._v(" "),t._m(12),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://www.sitepoint.com/angular-testing-tips-testing-directives/",target:"_blank",rel:"noopener noreferrer"}},[t._v("angular-testing-tips-testing-directives"),s("OutboundLink")],1)])]),t._v(" "),t._m(13),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://stackoverflow.com/questions/17554727/mocking-angular-module-dependencies-in-jasmine-unit-tests",target:"_blank",rel:"noopener noreferrer"}},[t._v("mocking-angular-module-dependencies"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://stackoverflow.com/questions/14773269/injecting-a-mock-into-an-angularjs-service/18756347#18756347",target:"_blank",rel:"noopener noreferrer"}},[t._v("injecting-a-mock-into-an-angularjs-service"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://www.sitepoint.com/mocking-dependencies-angularjs-tests/",target:"_blank",rel:"noopener noreferrer"}},[t._v("divers"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://blog.softit.fr/post/dummy-fake-stub-mock-et-spy-les-tests-unitaires-avec-l-aide-de-moq",target:"_blank",rel:"noopener noreferrer"}},[t._v("Dummy, Fake, Stub, Mock et Spy, les tests unitaires avec l'aide de Moq"),s("OutboundLink")],1)])]),t._v(" "),t._m(14),t._v(" "),t._m(15),s("ul",[t._m(16),t._v(" "),s("li",[s("p",[t._v("use "),s("code",[t._v("toThrowError(exceptionMsg)")]),t._v(" "),s("a",{attrs:{href:"http://jasmine.github.io/2.3/introduction.html#section-Included_Matchers",target:"_blank",rel:"noopener noreferrer"}},[t._v("matcher from Jasmine"),s("OutboundLink")],1)])]),t._v(" "),t._m(17)]),t._v(" "),t._m(18),t._m(19),t._v(" "),t._m(20),t._m(21),t._m(22),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"http://blog.xebia.com/2014/03/08/angularjs-e2e-testing-using-ngmocke2e/",target:"_blank",rel:"noopener noreferrer"}},[t._v("angularjs-e2e-testing-using-ngmocke2e"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"http://www.protractortest.org/#/locators",target:"_blank",rel:"noopener noreferrer"}},[t._v("locators protractors"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://docs.google.com/presentation/d/1B6manhG0zEXkC-H-tPo2vwU06JhL8w9-XCF9oehXzAQ/edit?pli=1#slide=id.g2bc490733_00",target:"_blank",rel:"noopener noreferrer"}},[t._v("page objects"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/CarmenPopoviciu/protractor-styleguide",target:"_blank",rel:"noopener noreferrer"}},[t._v("protractor-styleguide"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://www.exratione.com/2015/02/phantomjs-has-many-uses-but-function-testing-isnt-one-of-them/",target:"_blank",rel:"noopener noreferrer"}},[t._v("phantomjs not good for e2e"),s("OutboundLink")],1)])]),t._v(" "),t._m(23),t._v(" "),s("p",[t._v("ATTENTION CHROME & FIREFOX, need dl update de webdriver.")]),t._v(" "),t._m(24),t._v(" "),s("ul",[s("li",[s("code",[t._v("ignore_ssl")]),t._v(" for protractor "),s("a",{attrs:{href:"https://github.com/angular/protractor/issues/1847#issuecomment-76023932",target:"_blank",rel:"noopener noreferrer"}},[t._v("issue 1847"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("li",[t._v("proxy config + ignore_ssl for webdriver-manager, "),s("a",{attrs:{href:"https://github.com/angular/protractor/issues/1477",target:"_blank",rel:"noopener noreferrer"}},[t._v("issue 1477"),s("OutboundLink")],1),t._v(".")])]),t._v(" "),s("p",[t._v("ATTENTION IE :\npour exécution sur IE "),s("a",{attrs:{href:"http://selenium-release.storage.googleapis.com/index.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("need drivers spécifiques"),s("OutboundLink")],1),t._v(".\n(dépendent de la plateforme, sur win x64 : "),s("code",[t._v("IEDriverServer_x64_2.47.0.zip")]),t._v(")\nConfig à faire ensuite dans "),s("code",[t._v("protractor.conf.js")]),t._v(" pour lancer sur ce server (géré au niveau du generator)")]),t._v(" "),t._m(25),t._v(" "),t._m(26),t._m(27),t._v(" "),t._m(28),s("p",[t._v("IE nécessite un driver spécifique et une config spécifique.\nDans "),s("code",[t._v("gulp-protractor")]),t._v(" les drivers webdriver de IE ne sont pas DL, cf "),s("a",{attrs:{href:"https://github.com/mllrsohn/gulp-protractor/issues/38",target:"_blank",rel:"noopener noreferrer"}},[t._v("issue 38"),s("OutboundLink")],1),t._v("\nTélécharger les drivers IE manuellement "),s("a",{attrs:{href:"http://selenium-release.storage.googleapis.com/index.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("ici"),s("OutboundLink")],1),t._v(".\nDoc du driver "),s("a",{attrs:{href:"https://code.google.com/p/selenium/wiki/InternetExplorerDriver",target:"_blank",rel:"noopener noreferrer"}},[t._v("ici"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("p",[t._v("Installer l'exe dans la partie exécutable du disque dur.")]),t._v(" "),s("p",[t._v("Ajouter de la config à protractor.conf.js :")]),t._v(" "),t._m(29),t._m(30),t._v(" "),t._m(31),t._m(32),t._v(" "),t._m(33),s("p",[t._v("Nécessite que jasmineNodeOpts.isVerbose soit à true.")]),t._v(" "),t._m(34),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/larrymyers/jasmine-reporters#protractor",target:"_blank",rel:"noopener noreferrer"}},[t._v("Jasmine reporter"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("Discussion dans les "),s("a",{attrs:{href:"https://github.com/angular/protractor/issues/60",target:"_blank",rel:"noopener noreferrer"}},[t._v("issues de protractor"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("installation :")]),t._v(" "),t._m(35),t._m(36),t._v(" "),t._m(37),t._m(38),t._v(" "),s("p",[t._v("Le rapport est un fichier au format xml qui nécessite une mise en forme.\n"),s("a",{attrs:{href:"https://github.com/niedbalski/nosetest-xunit-xslt/blob/master/nosetests.xslt",target:"_blank",rel:"noopener noreferrer"}},[t._v("Cette xslt"),s("OutboundLink")],1),t._v(" peut être utilisée pour\nmettre en forme le xml d'output mais manque un moyen pour linker automatiquement le xml de sortie avec la xsl. (pas prévu par le module)")])])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"angularjs-testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#angularjs-testing"}},[this._v("#")]),this._v(" AngularJS - testing")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"tools"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tools"}},[this._v("#")]),this._v(" tools")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"unit-testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unit-testing"}},[this._v("#")]),this._v(" unit testing")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"best-articles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#best-articles"}},[this._v("#")]),this._v(" best articles")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"best-lib-ng-describe"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#best-lib-ng-describe"}},[this._v("#")]),this._v(" best lib (ng-describe)")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"integration-jasmine-dans-webstorm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#integration-jasmine-dans-webstorm"}},[this._v("#")]),this._v(" intégration jasmine dans webstorm")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"examples"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[this._v("#")]),this._v(" examples")])},function(){var t=this._self._c;return t("h4",{attrs:{id:"repos-examples"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#repos-examples"}},[this._v("#")]),this._v(" repos examples")])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("Guidelines and patterns for unit testing AngularJS apps.")])])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("Unit and e2e testing recipes for AngularJS")])])},function(){var t=this._self._c;return t("h4",{attrs:{id:"tests-avec-http"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tests-avec-http"}},[this._v("#")]),this._v(" tests avec $http")])},function(){var t=this._self._c;return t("h4",{attrs:{id:"tests-de-services"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tests-de-services"}},[this._v("#")]),this._v(" tests de services")])},function(){var t=this._self._c;return t("h4",{attrs:{id:"tests-de-directives"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tests-de-directives"}},[this._v("#")]),this._v(" tests de directives")])},function(){var t=this._self._c;return t("h4",{attrs:{id:"dependencies-mocking"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dependencies-mocking"}},[this._v("#")]),this._v(" Dependencies mocking")])},function(){var t=this._self._c;return t("h4",{attrs:{id:"testing-a-throw-exception"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing-a-throw-exception"}},[this._v("#")]),this._v(" Testing a throw exception")])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'throws exception when args are undefined or null'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("inject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("HistoryLRindexService")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("HistoryLRindexService"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addIndexElement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'toto'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toThrowError")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'HistoryLRindexValueFactory.addIndexElement(key, data) error : key null or undefined'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br")])])},function(){var t=this._self._c;return t("li",[t("p",[this._v("use anonymous function for the call")])])},function(){var t=this._self._c;return t("li",[t("p",[this._v("your impl should be something like that :")])])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("key"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("throw")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'HistoryLRindexValueFactory.addIndexElement(key, data) error : key null or undefined'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])])},function(){var t=this._self._c;return t("h4",{attrs:{id:"testing-a-directive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testing-a-directive"}},[this._v("#")]),this._v(" Testing a directive")])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'use strict'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n angular\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("module")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'app'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("directive")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'exampleDirective'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" exampleDirective"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("exampleDirective")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("restrict")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'E'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("scope")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("stroke")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("fill")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'\'')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'\'')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("''")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("link")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" attrs")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("calculateValues")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" canvasSize "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" size "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2.5")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("canvas")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" canvasSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("radius")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" size"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("center")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" canvasSize "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n attrs"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("$observe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'size'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("newSize")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("calculateValues")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parseInt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("newSize"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br"),s("span",{staticClass:"line-number"},[t._v("21")]),s("br"),s("span",{staticClass:"line-number"},[t._v("22")]),s("br"),s("span",{staticClass:"line-number"},[t._v("23")]),s("br"),s("span",{staticClass:"line-number"},[t._v("24")]),s("br"),s("span",{staticClass:"line-number"},[t._v("25")]),s("br"),s("span",{staticClass:"line-number"},[t._v("26")]),s("br"),s("span",{staticClass:"line-number"},[t._v("27")]),s("br"),s("span",{staticClass:"line-number"},[t._v("28")]),s("br"),s("span",{staticClass:"line-number"},[t._v("29")]),s("br"),s("span",{staticClass:"line-number"},[t._v("30")]),s("br"),s("span",{staticClass:"line-number"},[t._v("31")]),s("br"),s("span",{staticClass:"line-number"},[t._v("32")]),s("br"),s("span",{staticClass:"line-number"},[t._v("33")]),s("br"),s("span",{staticClass:"line-number"},[t._v("34")]),s("br"),s("span",{staticClass:"line-number"},[t._v("35")]),s("br"),s("span",{staticClass:"line-number"},[t._v("36")]),s("br"),s("span",{staticClass:"line-number"},[t._v("37")]),s("br"),s("span",{staticClass:"line-number"},[t._v("38")]),s("br")])])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'use strict'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("describe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'directive: example'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("beforeEach")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("module")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'app'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("beforeEach")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("inject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("$rootScope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" $compile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n scope "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" $rootScope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("$"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n element "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'\'')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("size "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n element "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("$compile")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("$digest")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("describe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'with the first given value'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should compute the size to create other values"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" isolated "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isolateScope")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("canvas"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("250")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("center"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("125")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("radius"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should contain a svg tag with proper size"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'svg'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'height'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'250'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'svg'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'width'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'250'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should contain a circle with proper attributes"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'cx'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'125'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'cy'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'125'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'r'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'100'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'stroke'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'black'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'fill'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'blue'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("describe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'when changing the initial value to a different one'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("beforeEach")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("size "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("160")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("$digest")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should compute the size to create other values"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" isolated "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("isolateScope")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("canvas"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("400")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("center"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("200")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isolated"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("values"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("radius"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("160")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should contain a svg tag with proper size"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'svg'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'height'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'400'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'svg'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'width'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'400'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("it")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"should contain a circle with proper attributes"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'cx'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'200'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'cy'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'200'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'r'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'160'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'stroke'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'black'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("expect")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("element"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("find")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'circle'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("attr")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'fill'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toBe")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'blue'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br"),s("span",{staticClass:"line-number"},[t._v("21")]),s("br"),s("span",{staticClass:"line-number"},[t._v("22")]),s("br"),s("span",{staticClass:"line-number"},[t._v("23")]),s("br"),s("span",{staticClass:"line-number"},[t._v("24")]),s("br"),s("span",{staticClass:"line-number"},[t._v("25")]),s("br"),s("span",{staticClass:"line-number"},[t._v("26")]),s("br"),s("span",{staticClass:"line-number"},[t._v("27")]),s("br"),s("span",{staticClass:"line-number"},[t._v("28")]),s("br"),s("span",{staticClass:"line-number"},[t._v("29")]),s("br"),s("span",{staticClass:"line-number"},[t._v("30")]),s("br"),s("span",{staticClass:"line-number"},[t._v("31")]),s("br"),s("span",{staticClass:"line-number"},[t._v("32")]),s("br"),s("span",{staticClass:"line-number"},[t._v("33")]),s("br"),s("span",{staticClass:"line-number"},[t._v("34")]),s("br"),s("span",{staticClass:"line-number"},[t._v("35")]),s("br"),s("span",{staticClass:"line-number"},[t._v("36")]),s("br"),s("span",{staticClass:"line-number"},[t._v("37")]),s("br"),s("span",{staticClass:"line-number"},[t._v("38")]),s("br"),s("span",{staticClass:"line-number"},[t._v("39")]),s("br"),s("span",{staticClass:"line-number"},[t._v("40")]),s("br"),s("span",{staticClass:"line-number"},[t._v("41")]),s("br"),s("span",{staticClass:"line-number"},[t._v("42")]),s("br"),s("span",{staticClass:"line-number"},[t._v("43")]),s("br"),s("span",{staticClass:"line-number"},[t._v("44")]),s("br"),s("span",{staticClass:"line-number"},[t._v("45")]),s("br"),s("span",{staticClass:"line-number"},[t._v("46")]),s("br"),s("span",{staticClass:"line-number"},[t._v("47")]),s("br"),s("span",{staticClass:"line-number"},[t._v("48")]),s("br"),s("span",{staticClass:"line-number"},[t._v("49")]),s("br"),s("span",{staticClass:"line-number"},[t._v("50")]),s("br"),s("span",{staticClass:"line-number"},[t._v("51")]),s("br"),s("span",{staticClass:"line-number"},[t._v("52")]),s("br"),s("span",{staticClass:"line-number"},[t._v("53")]),s("br"),s("span",{staticClass:"line-number"},[t._v("54")]),s("br"),s("span",{staticClass:"line-number"},[t._v("55")]),s("br"),s("span",{staticClass:"line-number"},[t._v("56")]),s("br"),s("span",{staticClass:"line-number"},[t._v("57")]),s("br"),s("span",{staticClass:"line-number"},[t._v("58")]),s("br"),s("span",{staticClass:"line-number"},[t._v("59")]),s("br"),s("span",{staticClass:"line-number"},[t._v("60")]),s("br"),s("span",{staticClass:"line-number"},[t._v("61")]),s("br"),s("span",{staticClass:"line-number"},[t._v("62")]),s("br"),s("span",{staticClass:"line-number"},[t._v("63")]),s("br"),s("span",{staticClass:"line-number"},[t._v("64")]),s("br"),s("span",{staticClass:"line-number"},[t._v("65")]),s("br"),s("span",{staticClass:"line-number"},[t._v("66")]),s("br"),s("span",{staticClass:"line-number"},[t._v("67")]),s("br"),s("span",{staticClass:"line-number"},[t._v("68")]),s("br"),s("span",{staticClass:"line-number"},[t._v("69")]),s("br"),s("span",{staticClass:"line-number"},[t._v("70")]),s("br"),s("span",{staticClass:"line-number"},[t._v("71")]),s("br"),s("span",{staticClass:"line-number"},[t._v("72")]),s("br"),s("span",{staticClass:"line-number"},[t._v("73")]),s("br")])])},function(){var t=this._self._c;return t("h2",{attrs:{id:"e2e-testing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#e2e-testing"}},[this._v("#")]),this._v(" e2e testing")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"installation-des-drivers-pour-webdrivers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installation-des-drivers-pour-webdrivers"}},[this._v("#")]),this._v(" installation des drivers pour webdrivers")])},function(){var t=this,s=t._self._c;return s("p",[t._v("Derrière un proxy il faut config envvar "),s("code",[t._v("HTTP_PROXY")]),t._v(" & "),s("code",[t._v("HTTPS_PROXY")]),t._v(" sur fiddler ("),s("code",[t._v("http://localhost:8888")]),t._v(")\net set "),s("code",[t._v("ignore_ssl")]),t._v(" à true si le magasin de certificat du réseau est fucké. Pour le moment on sait le faire que en dur dans le source de webdriver-manager ( "),s("code",[t._v(".\\node_modules\\gulp-protractor\\node_modules\\protractor\\bin\\webdriver-manager")]),t._v(" )\nligne 93 ("),s("code",[t._v("default('ignore_ssl', false)")]),t._v(".)")])},function(){var t=this._self._c;return t("h3",{attrs:{id:"lancer-la-suite-de-test-sur-chaque-browser"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lancer-la-suite-de-test-sur-chaque-browser"}},[this._v("#")]),this._v(" lancer la suite de test sur chaque browser")])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("multiCapabilities")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'firefox'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'chrome'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ie'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br")])])},function(){var t=this._self._c;return t("h3",{attrs:{id:"tests-pour-ie-fail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tests-pour-ie-fail"}},[this._v("#")]),this._v(" tests pour ie fail")])},function(){var t=this._self._c;return t("div",{staticClass:"language-text line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[this._v("UnknownError: The path to the driver executable must be set by the webdriver.ie.driver system property; for more information, see http://code.google.com/p/selenium/wiki/InternetExplorerDriver. The latest version can be downloaded from http://selenium-release.storage.googleapis.com/index.html\n")])]),this._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[this._v("1")]),t("br")])])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("seleniumArgs")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'-Dwebdriver.ie.driver=C:\\\\Produits\\\\dev\\\\ws-js\\\\webdriver-ie\\\\IEDriverServer.exe'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])])},function(){var t=this._self._c;return t("p",[this._v("Ajouter la capability à la config de "),t("code",[this._v("protractor.conf.js")]),this._v(" :")])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[t._v(" "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("multiCapabilities")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'firefox'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'chrome'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'browserName'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'internet explorer'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'platform'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ANY'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'version'")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'11'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br")])])},function(){var t=this._self._c;return t("h3",{attrs:{id:"exporter-les-resultats"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#exporter-les-resultats"}},[this._v("#")]),this._v(" exporter les résultats")])},function(){var t=this._self._c;return t("div",{staticClass:"language-javascript line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-javascript"}},[t("code",[t("span",{pre:!0,attrs:{class:"token literal-property property"}},[this._v("resultJsonOutputFile")]),t("span",{pre:!0,attrs:{class:"token operator"}},[this._v(":")]),this._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[this._v("'e2e.results.json'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[this._v(",")]),this._v("\n")])]),this._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[this._v("1")]),t("br")])])},function(){var t=this._self._c;return t("h3",{attrs:{id:"reporter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reporter"}},[this._v("#")]),this._v(" reporter")])},function(){var t=this._self._c;return t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[this._v("npm")]),this._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[this._v("install")]),this._v(" jasmine-reporters@^2.0.7 --save-dev\n")])]),this._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[this._v("1")]),t("br")])])},function(){var t=this._self._c;return t("p",[this._v("Dans "),t("code",[this._v("protractor.conf.js")]),this._v(", ajouter :")])},function(){var t=this,s=t._self._c;return s("div",{staticClass:"language-javascript line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-javascript"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" jasmineReporters "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'jasmine-reporters'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nexports"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("config "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("framework")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'jasmine2'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("onPrepare")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n jasmine"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEnv")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addReporter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("jasmineReporters"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("JUnitXmlReporter")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("savePath")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" paths"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("e2e "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/reports/'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("consolidateAll")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("filePrefix")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'e2e.chrome.results.'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_currentTimestampToString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Options to be passed to Jasmine-node.")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("jasmineNodeOpts")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("showColors")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("defaultTimeoutInterval")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("60000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("print")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br")])])},function(){var t=this._self._c;return t("p",[this._v("Va créer le rapport dans "),t("code",[this._v("../e2e/reports/")])])}],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/103.d43d607c.js b/docs/assets/js/104.ffcb3213.js similarity index 99% rename from docs/assets/js/103.d43d607c.js rename to docs/assets/js/104.ffcb3213.js index 5b32e9a8..ca91adec 100644 --- a/docs/assets/js/103.d43d607c.js +++ b/docs/assets/js/104.ffcb3213.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{271:function(t,e,s){"use strict";s.r(e);var a=s(0),n=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"content"},[t._m(0),t._v(" "),e("p",[e("a",{attrs:{href:"https://angular.io/guide/upgrade",target:"_blank",rel:"noopener noreferrer"}},[t._v("Upgrade guide ng2 doc"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("a",{attrs:{href:"https://www.codeproject.com/Articles/1121384/AngularJS-Migration-Guide",target:"_blank",rel:"noopener noreferrer"}},[t._v("AngularJS 2.0 Migration Guide : codeproject.com"),e("OutboundLink")],1)]),t._v(" "),t._m(1),t._v(" "),e("p",[e("a",{attrs:{href:"http://maxlab.fr/javascript/migrer-de-angularjs-1-x-vers-angularjs-2-0-pratique/#foot_loc_1403_1",target:"_blank",rel:"noopener noreferrer"}},[t._v("Préparer la migration de AngularJS 1.x vers AngularJS 2.0 : maxlab.fr"),e("OutboundLink")],1)]),t._v(" "),e("blockquote",[t._m(2),t._v(" "),e("p",[t._v("Supprimer le "),e("code",[t._v("$scope")]),t._v(", c’est supprimer "),e("code",[t._v("$watch")]),t._v(" "),e("code",[t._v("$apply")]),t._v(" "),e("code",[t._v("$timeout")]),t._v(" .. des notions qui compliquent l’apprentissage du\nframework et sont souvent à l’origine de "),e("a",{attrs:{href:"http://www.bennadel.com/blog/2605-scope-evalasync-vs-timeout-in-angularjs.htm",target:"_blank",rel:"noopener noreferrer"}},[t._v("hacks"),e("OutboundLink")],1),t._v(".")]),t._v(" "),t._m(3),t._v(" "),e("p",[t._v("Tirer profit des fonctionnalités d’ECMAscript 6/2015")]),t._v(" "),e("ul",[e("li",[t._v("Les "),e("a",{attrs:{href:"https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/import",target:"_blank",rel:"noopener noreferrer"}},[t._v("modules"),e("OutboundLink")],1)])]),t._v(" "),e("p",[t._v("pour appliquer le paragraphe précédent sur le découplage")]),t._v(" "),e("ul",[e("li",[t._v("Les "),e("a",{attrs:{href:"https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fl%C3%A9ch%C3%A9es",target:"_blank",rel:"noopener noreferrer"}},[t._v("arrow functions"),e("OutboundLink")],1)])]),t._v(" "),t._m(4),t._v(" "),e("ul",[e("li",[t._v("La "),e("a",{attrs:{href:"http://ariya.ofilabs.com/2013/02/es6-and-object-literal-property-value-shorthand.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("notation objet simplifiée"),e("OutboundLink")],1),t._v(" et la "),e("a",{attrs:{href:"https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Affecter_par_d%C3%A9composition",target:"_blank",rel:"noopener noreferrer"}},[t._v("décomposition"),e("OutboundLink")],1)])]),t._v(" "),e("p",[t._v("pour réduire le code et augmenter la lisibilité")]),t._v(" "),e("ul",[e("li",[t._v("Les classes : pour coller à la syntaxe d’Angular 2 et éventuellement utiliser les "),e("a",{attrs:{href:"https://github.com/wycats/javascript-decorators",target:"_blank",rel:"noopener noreferrer"}},[t._v("décorateurs d’ES7"),e("OutboundLink")],1)])]),t._v(" "),t._m(5)]),t._v(" "),e("p",[e("a",{attrs:{href:"https://www.inrhythm.com/upgrading-angular-1-to-react-angular-2/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Preparing your Angular 1 codebase to upgrade to React or Angular 2 - www.inrhythm.com - 20170424"),e("OutboundLink")],1)]),t._v(" "),t._m(6),t._v(" "),t._m(7),t._v(" "),e("p",[t._v("Fonctionne très bien mais pas facile :")]),t._v(" "),t._m(8),t._v(" "),t._m(9),e("ul",[t._m(10),t._v(" "),e("li",[t._v("problème avec les variables globales (par ex fichier de config). Dans un premier temps, coller ces variables dans l'objet global "),e("code",[t._v("window")]),t._v(" ("),e("a",{attrs:{href:"https://stackoverflow.com/questions/37656592/define-global-variable-with-webpack",target:"_blank",rel:"noopener noreferrer"}},[t._v("cf"),e("OutboundLink")],1),t._v("). Attention à l'ordre des imports comme pour les modules AngularJS.")]),t._v(" "),t._m(11),t._v(" "),e("li",[e("a",{attrs:{href:"https://stackoverflow.com/questions/33300289/how-to-use-webpack-with-angular-templatecache",target:"_blank",rel:"noopener noreferrer"}},[t._v("problème avec les templates des composants"),e("OutboundLink")],1),t._v(". La solution la plus simple est de ne pas importer les html via les "),e("code",[t._v("index.js")]),t._v(" mais direct via les composants en faisant un "),e("code",[t._v("require")]),t._v(" du fichier html sur la props "),e("code",[t._v("template")]),t._v(" plutôt que via "),e("code",[t._v("templateUrl")]),t._v(".")]),t._v(" "),t._m(12),t._v(" "),e("li",[t._v("problème dans certains templates : Il faut être très strict sur la présentation de caractères spéciaux dans les templates, il ne faut par exemple aucun opérateur logique webpack aime pas !")])]),t._v(" "),t._m(13),t._v(" "),e("p",[t._v("Dans les grandes lignes :")]),t._v(" "),e("ul",[t._m(14),t._v(" "),e("li",[t._v("supprimer toutes les IIFE")]),t._v(" "),e("li",[t._v("passer du style-guide de John Papa qui est calibré sur AngularJS avec ES5 à "),e("a",{attrs:{href:"https://github.com/toddmotto/angularjs-styleguide",target:"_blank",rel:"noopener noreferrer"}},[t._v("celui de Todd Motto"),e("OutboundLink")],1),t._v(" qui est calibré pour ES2015.")])]),t._v(" "),e("p",[t._v("concrètement :")]),t._v(" "),t._m(15),t._v(" "),t._m(16),t._v(" "),e("p",[t._v("Avant on a")]),t._v(" "),t._m(17),e("p",[t._v("Après on a :")]),t._v(" "),t._m(18),t._m(19),t._v(" "),t._m(20),t._v(" "),t._m(21),t._m(22),t._v(" "),t._m(23),t._m(24),t._v(" "),e("p",[t._v("composants :")]),t._v(" "),e("p",[t._v("La fonction déclarant le controller devient une classe.\nOn ajoute un constructeur à cette classe pour réaliser les injections de dépendances :")]),t._v(" "),t._m(25),t._m(26),t._v(" "),e("p",[t._v("Les fonctions implémentants les events hooks :")]),t._v(" "),t._m(27),e("p",[t._v("deviennent des fonctions de la classe :")]),t._v(" "),t._m(28),e("p",[t._v("en l'absence de ngAnnotate, la déclaration des dépendances à injecter doit être conservée :")]),t._v(" "),t._m(29),e("p",[t._v("On se retrouve avec 3 blocs :")]),t._v(" "),t._m(30),t._v(" "),e("p",[t._v("Attention la classe doit être impérativement déclarée en premier. Il faut donc déplacer les blocs pour avoir la classe en premier, ensuite les injections et enfin l'export.")]),t._v(" "),t._m(31),t._v(" "),t._m(32),t._v(" "),e("p",[t._v("On ne peut plus faire :")]),t._v(" "),t._m(33),t._m(34),t._v(" "),t._m(35),e("p",[t._v("on doit exécuter la méthode :")]),t._v(" "),t._m(36),t._m(37),t._v(" "),t._m(38),e("p",[e("a",{attrs:{href:"http://blogtech.soprasteria.com/2017/05/24/quelques-grands-principes-pour-aller-vers-angular-2-x-en-venant-dangular-1-4/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Quelques grands principes pour aller vers Angular 2.x en venant d’Angular 1.4 ? : blogtech.soprasteria.com"),e("OutboundLink")],1)]),t._v(" "),t._m(39),t._v(" "),e("p",[e("a",{attrs:{href:"https://blog.xebia.fr/2016/03/01/webpack-es6-es2015-babel-6-pour-modulariser-son-application-angularjs/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Webpack, ES6 (ES2015) & Babel 6 pour modulariser son application AngularJS - blog.xebia.fr - 20160301"),e("OutboundLink")],1)]),t._v(" "),t._m(40),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/Gillespie59/angular2-migration-sample",target:"_blank",rel:"noopener noreferrer"}},[t._v("Gillespie59/angular2-migration-sample : "),e("code",[t._v("github.com")]),e("OutboundLink")],1)]),t._v(" "),t._m(41),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/ngmigrate/ngmigrate.github.io",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("ngmigrate/ngmigrate.github.io")]),t._v(" : "),e("code",[t._v("github.com")]),e("OutboundLink")],1)]),t._v(" "),e("blockquote",[e("p",[t._v("source code of the Todd Motto migration guide "),e("a",{attrs:{href:"http://developer.telerik.com/angular-2-migration-guide/",target:"_blank",rel:"noopener noreferrer"}},[t._v("ng-migrate"),e("OutboundLink")],1)])]),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/ngParty/ng1-migration-workshop",target:"_blank",rel:"noopener noreferrer"}},[t._v("ngParty/ng1-migration-workshop : "),e("code",[t._v("github.com")]),e("OutboundLink")],1)]),t._v(" "),t._m(42),t._v(" "),e("p",[e("a",{attrs:{href:"http://blog.rangle.io/upgrade-your-application-to-angular-2-with-ng-upgrade/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Upgrading Your Application to Angular 2 with ng-upgrade : blog.rangle.io"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("a",{attrs:{href:"https://blog.thoughtram.io/angular/2015/10/24/upgrading-apps-to-angular-2-using-ngupgrade.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Upgrading Angular apps using ngUpgrade - Pascal Precht - 20161218"),e("OutboundLink")],1)]),t._v(" "),e("p",[e("a",{attrs:{href:"https://blog.nrwl.io/ngupgrade-in-depth-436a52298a00",target:"_blank",rel:"noopener noreferrer"}},[t._v("NgUpgrade in Depth - Victor Savkin - 20170512"),e("OutboundLink")],1)]),t._v(" "),t._m(43),t._v(" "),t._m(44),t._v(" "),e("p",[t._v("L'idée avec les life cycles event c'est de remplacer le dirty checking d'origine placé sur tout l'arbre des scopes par un cycle de vie centré composant par composant.")]),t._v(" "),t._m(45),t._v(" "),e("p",[t._v("To upgrade ui-router 0.4.x to 1.0.x, we need to use a bundler and modules.")]),t._v(" "),e("p",[t._v("Check full example at "),e("a",{attrs:{href:"https://github.com/ui-router/sample-app-angularjs",target:"_blank",rel:"noopener noreferrer"}},[t._v("sample-app-angularjs - "),e("code",[t._v("github.com/ui-router")]),e("OutboundLink")],1)]),t._v(" "),e("p",[t._v("If you don't want to migrate from IIFE to ES6 modules and a bundlers (you want to upgrade ui-router first before the bundlers and ES6 modules), you can import a mono-bundle backward compatible, cf "),e("a",{attrs:{href:"https://ui-router.github.io/blog/uirouter-for-angularjs-umd-bundles/",target:"_blank",rel:"noopener noreferrer"}},[t._v("\nUirouter For Angularjs Umd Bundles\n"),e("OutboundLink")],1),t._v(" post.")]),t._v(" "),t._m(46),t._v(" "),t._m(47),t._v(" "),e("p",[t._v("The "),e("code",[t._v("$stateParams")]),t._v(" service becomes "),e("strong",[t._v("deprecated")]),t._v(". The best way to deal with it "),e("a",{attrs:{href:"https://github.com/angular-ui/ui-router/issues/3110#issuecomment-315855728",target:"_blank",rel:"noopener noreferrer"}},[t._v("is explained here"),e("OutboundLink")],1),t._v(" :")]),t._v(" "),t._m(48)])}),[function(){var t=this._self._c;return t("h1",{attrs:{id:"angular-migration-from-angularjs"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#angular-migration-from-angularjs"}},[this._v("#")]),this._v(" Angular - Migration from AngularJS")])},function(){var t=this,e=t._self._c;return e("blockquote",[e("p",[t._v("2016/08/31")]),t._v(" "),e("p",[e("strong",[t._v("Preparation")])]),t._v(" "),e("ul",[e("li",[t._v("Follow the John Papa’s Styleguide for Angular 1 development")]),t._v(" "),e("li",[t._v("Update to the latest version of Angular 1")]),t._v(" "),e("li",[t._v("All new development using components")]),t._v(" "),e("li",[t._v("Switch controllers to components (component directives)")]),t._v(" "),e("li",[t._v("Remove incompatible features (specific to Angular 2) from directives")]),t._v(" "),e("li",[t._v("Implement manual bootstrapping (No more ng-app)")])]),t._v(" "),e("p",[e("strong",[t._v("Upgrade")])]),t._v(" "),e("ul",[e("li",[t._v("Add TypeScript transpilation and build")]),t._v(" "),e("li",[t._v("Start using ES6 or JavaScript 2015")]),t._v(" "),e("li",[t._v("Switch controllers and services to ES6 Classes")]),t._v(" "),e("li",[t._v("Add Angular 2.0 to your project")]),t._v(" "),e("li",[t._v("Migrate one piece at a time")])])])},function(){var t=this._self._c;return t("p",[this._v("Eviter l’usage de "),t("code",[this._v("$scope")]),this._v(" et utiliser la syntaxe "),t("code",[this._v("ControllerAs")]),this._v(".")])},function(){var t=this._self._c;return t("p",[this._v("Au lieu de créer un controleur et d’utiliser "),t("code",[this._v("ng-controller")]),this._v(", préférez l’usage d’une directive.")])},function(){var t=this._self._c;return t("p",[this._v("pour simplifier les retours issues de promises, l’utilisation des fonctions sur les tableaux et le binding du "),t("code",[this._v("this")])])},function(){var t=this._self._c;return t("p",[this._v("Services : Dans Angular 2, les services sont de simples classes, il est préférable de n’utiliser que "),t("code",[this._v("angular.service")]),this._v("\ndans Angular 1")])},function(){var t=this,e=t._self._c;return e("blockquote",[e("ul",[e("li",[e("p",[t._v("Step 1: Integrate Webpack into your build process")]),t._v(" "),e("ul",[e("li",[t._v("use index.js files in each dir/subdir to build a tree of files (all files : js, css and html)")]),t._v(" "),e("li",[t._v("drop gulp in favor of Webpack")])])]),t._v(" "),e("li",[e("p",[t._v("Step 2: Embrace ES6 modules, upgrade Angular services and controllers to ES6 classes")]),t._v(" "),e("ul",[e("li",[t._v("replace global objects through IIFE with ES6 imports")]),t._v(" "),e("li",[t._v("refactor old functions definitions for components and services with classes")])])]),t._v(" "),e("li",[e("p",[t._v("Step 3: Abstract away the Angular module system and decouple your source code from the framework")]),t._v(" "),e("ul",[e("li",[t._v("replace angular builtin helpers functions with lodash functions")]),t._v(" "),e("li",[t._v("use the ui-router pattern (a single ngModule for all the app, and use the regular ES6 modules)")])])])])])},function(){var t=this._self._c;return t("h2",{attrs:{id:"retex-step-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#retex-step-1"}},[this._v("#")]),this._v(" RETEX Step 1")])},function(){var t=this,e=t._self._c;return e("ul",[e("li",[t._v("attention à l'ordre des "),e("code",[t._v("import")]),t._v(" dans les fichiers "),e("code",[t._v("index.js")]),t._v(", placer les déclarations de modules en premier dans chaque fichier")]),t._v(" "),e("li",[t._v("si usage de Bootstrap, il suppose la présence de l'objet "),e("code",[t._v("jQuery")]),t._v(" sur l'objet "),e("code",[t._v("window")]),t._v(", il convient donc de l'ajouter :")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// webpack conf")]),t._v("\n\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("plugins")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("webpack"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ProvidePlugin")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("$")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'jquery'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("jQuery")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'jquery'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'window.jQuery'")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'jquery'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br"),e("span",{staticClass:"line-number"},[t._v("10")]),e("br"),e("span",{staticClass:"line-number"},[t._v("11")]),e("br"),e("span",{staticClass:"line-number"},[t._v("12")]),e("br")])])},function(){var t=this._self._c;return t("li",[this._v("il est possible que certaines dépendances soient chargées plusieurs fois selon comment elles sont organisées. Par exemple d'avoir ce message de AngularJS "),t("code",[this._v("WARNING: Tried to load angular more than once.")]),this._v(". Ca augmente la taille du bundle mais comme c'est temporaire on peut passer outre le temps de tout passer en modules ES6.")])},function(){var t=this._self._c;return t("li",[this._v("problème avec les dépendances importées via l'IIFE en tant que variables globales. Passer directement par un import classique depuis le source concerné en plus de l'IIFE. Par ex : "),t("code",[this._v("import Fuse from '../../../../node_modules/fuse.js/dist/fuse.min';")]),this._v(" à ajouter en tête de fichier devant l'IIFE qui n'est pas touchée.")])},function(){var t=this,e=t._self._c;return e("li",[t._v("problème avec les css. Attention depuis le browser les urls des css sont résolvées avec le chemin relatif serveur de la css. Par exemple, si sur le serveur web j'ai "),e("code",[t._v("/assets/css/app.css")]),t._v(" et que dans cette css j'ai une instruction "),e("code",[t._v("url()")]),t._v(" qui pointe sur "),e("code",[t._v("/assets/fonts/toto.woff")]),t._v(" par exemple, lorsque le call sera effectué dans le browser ça ira chercher sur "),e("code",[t._v("/assets/css/assets/fonts/toto.woff")]),t._v(". Il convient donc de placer les css à la racine du serveur web pour éviter ce problème.")])},function(){var t=this._self._c;return t("h2",{attrs:{id:"retex-step-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#retex-step-2"}},[this._v("#")]),this._v(" RETEX Step 2")])},function(){var t=this._self._c;return t("li",[this._v("utiliser les "),t("code",[this._v("import")]),this._v("/"),t("code",[this._v("export")]),this._v(" ES6")])},function(){var t=this._self._c;return t("ul",[t("li",[this._v("supprimer les IIFE, exporter l'objet/fonction de description du component/filter/service/directive")]),this._v(" "),t("li",[this._v("renommer la fonction de déclaration de "),t("code",[this._v("blablaService")]),this._v(" en "),t("code",[this._v("blabla")]),this._v(", exporter en nommant le type de composant (Component, Filter, Service, Directive).")])])},function(){var t=this._self._c;return t("p",[this._v("Par exemple pour un composant référencé "),t("code",[this._v("'headerView'")]),this._v(" dans l'injecteur ayant un contrôleur "),t("code",[this._v("HeaderViewController")]),this._v(" :")])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// header-view.component.js")]),t._v("\n angular\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("module")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'app.header'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("component")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'headerView'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'./header-view.html'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("controller")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" HeaderViewController\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// header-view.component.js")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("export")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" HeaderViewComponent "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("template")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("require")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'./header-view.html'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("controller")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" HeaderViewController\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// puis la déclaration des injections de HeaderViewController")]),t._v("\nHeaderViewController"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("$inject "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* ... */")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// puis l'implémentation du ctrl")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("HeaderViewController")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("/* ... */")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" ctrl "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br"),e("span",{staticClass:"line-number"},[t._v("10")]),e("br"),e("span",{staticClass:"line-number"},[t._v("11")]),e("br"),e("span",{staticClass:"line-number"},[t._v("12")]),e("br"),e("span",{staticClass:"line-number"},[t._v("13")]),e("br")])])},function(){var t=this._self._c;return t("ul",[t("li",[this._v("importer dans la déclaration du module afférant")])])},function(){var t=this._self._c;return t("p",[this._v("Dans le fichier "),t("code",[this._v("*.module.js")]),this._v(" correspondant c'est là qu'on va désormais déclarer les composants à l'injecteur.")])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// header.module.js")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" angular "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'angular'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("HeaderViewComponent"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'./header-view.component'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" header "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" angular"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("module")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'app.header'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ...")]),t._v("\nheader"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("component")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'headerView'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" HeaderViewComponent"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// on exporte le module pour l'importer à son tour dans le module de niveau supérieur")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("export")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" HeaderModule "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" header"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Attention le module qui importe ce module doit set le nom en dépendant et pas le module lui même :")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// app.module.js")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" angular "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'angular'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("HeaderModule"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'./layout/header/header.module'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//...")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" app "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" angular"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("module")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'app'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("HeaderModule"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br"),e("span",{staticClass:"line-number"},[t._v("10")]),e("br"),e("span",{staticClass:"line-number"},[t._v("11")]),e("br"),e("span",{staticClass:"line-number"},[t._v("12")]),e("br"),e("span",{staticClass:"line-number"},[t._v("13")]),e("br"),e("span",{staticClass:"line-number"},[t._v("14")]),e("br"),e("span",{staticClass:"line-number"},[t._v("15")]),e("br"),e("span",{staticClass:"line-number"},[t._v("16")]),e("br"),e("span",{staticClass:"line-number"},[t._v("17")]),e("br"),e("span",{staticClass:"line-number"},[t._v("18")]),e("br"),e("span",{staticClass:"line-number"},[t._v("19")]),e("br")])])},function(){var t=this,e=t._self._c;return e("ul",[e("li",[t._v("supprimer les fichiers "),e("code",[t._v("index.js")]),t._v(" dont les "),e("code",[t._v("import")]),t._v(" font doublons")]),t._v(" "),e("li",[t._v("garder les "),e("code",[t._v("index.js")]),t._v(" pour les dépendances et le point d'entrée de l'appli")]),t._v(" "),e("li",[t._v("reconfigurer ESLint pour prendre en charge ES2015 et les modules")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"parserOptions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"ecmaVersion"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v('"sourceType"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"module"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br")])])},function(){var t=this._self._c;return t("ul",[t("li",[this._v("après cette migration, "),t("strong",[this._v("Karma n'est plus capable d'exécuter les TU out-of-the-box")]),this._v(". Les remettre d'aplomb n'est pas utile puisqu'il n'y aura aucun dev et que Cypress permet de tester la non-régression (suppose d'avoir des tests d'UI suffisamment fiables, Cypress est parfait pour ça !).")]),this._v(" "),t("li",[this._v("refacto les composants / services / controller / etc ... en classes.")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("constructor")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("logger"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" headerMenuConfigObjectService"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" headerService")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("logger "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" logger"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("headerMenuConfigObjectService "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" headerMenuConfigObjectService"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("headerService "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" headerService"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br")])])},function(){var t=this._self._c;return t("p",[this._v("On binde les services à l'instance. Le "),t("code",[this._v("var ctrl = this;")]),this._v(" disparait.")])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[t._v(" ctrl"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("$onInit")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("init")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n logger"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("info")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'app.header.HeaderViewController.$onInit()'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'start'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n ctrl"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("grandMenu "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" headerMenuConfigObjectService"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("getMenu")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n ctrl"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("stats "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" headerService"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n ctrl"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("clickRefreshData "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" headerService"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("clickRefreshData"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n logger"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("info")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'app.header.HeaderViewController.$onInit() ctrl.grandMenu = '")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" ctrl"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("grandMenu"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("$onInit")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("logger"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("info")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'app.header.HeaderView.$onInit()'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'start'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//this.grandMenu = this.headerMenuConfigObjectService.getMenu(); // inutile puisque headerMenuConfigObjectService est bind au moment de son injection")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("stats "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("headerService"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("data"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//this.clickRefreshData = this.headerService.clickRefreshData; // inutile puisque headerService est bind au moment de son injection")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("logger"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("info")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'app.header.HeaderView.$onInit() ctrl.grandMenu = '")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("grandMenu"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[t._v("HeaderView"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("$inject "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'logger'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'headerMenuConfigObjectService'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'headerService'")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br")])])},function(){var t=this._self._c;return t("ul",[t("li",[this._v("l'export de la déclaration du composant (un litteral) qui deviendra un decorator en Angular.")]),this._v(" "),t("li",[this._v("la classe implémentant le comportement du composant (l'ancien controller)")]),this._v(" "),t("li",[this._v("la déclaration explicite des dépendances à injecter")])])},function(){var t=this._self._c;return t("p",[this._v("Attention il faut transformer les fonctions anonymes des résolutions de promesses dans les composants par des arrows functions (à cause du "),t("code",[this._v("this")]),this._v(")")])},function(){var t=this._self._c;return t("p",[this._v("Attention avec les services, lorsqu'on a défini l'implémentation de higher order function ("),t("code",[this._v("reduce")]),this._v(", "),t("code",[this._v("map")]),this._v(", "),t("code",[this._v("filter")]),this._v(") dans une fonction du service/directive et qu'on la passait telle quelle (la définition de la fonction sans l'exécuter), maintenant que ces fonctions sont des méthodes de fonctions il est nécessaire d'avoir une exécution.")])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[t._v("selectedTagList"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("map")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("mapTagListToTagListName"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br")])])},function(){var t=this._self._c;return t("p",[this._v("où "),t("code",[this._v("mapTagListToTagListName")]),this._v(" serait une méthode de la même classe telle que :")])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("mapTagListToTagListName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("item")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" item"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("text"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[t._v("selectedTagList"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("map")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("this")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("mapTagListToTagListName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br")])])},function(){var t=this._self._c;return t("p",[this._v("et donc retourner la fonction implémentant la "),t("code",[this._v("map")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"language-javascript line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-javascript"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("mapTagListToTagListName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("item")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" item"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("text"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br")])])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("Très détaillé avec contextualisation + plein de bons liens en fin d'article")])])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("montre un exemple possible d'état intermédiaire (ES2015 + Babel + Webpack) lors de la migration quand on part d'un AngularJS legacy (par ex ng1.4 + ES5 + grunt/gulp).")])])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("a short example")])])},function(){var t=this._self._c;return t("blockquote",[t("p",[this._v("migration example app from angular 1.x ES5 to Typescript and ngMetadata")])])},function(){var t=this._self._c;return t("h2",{attrs:{id:"migration-des-watch"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#migration-des-watch"}},[this._v("#")]),this._v(" migration des "),t("code",[this._v("$watch")])])},function(){var t=this._self._c;return t("ul",[t("li",[this._v("soit on a un ng-model auquel cas il suffit d'ajouter un ng-change")]),this._v(" "),t("li",[this._v("soit on a besoin de AngularJS 1.5 et d'utiliser le life cycle event "),t("code",[this._v("$onChanges")]),this._v(" des composants")])])},function(){var t=this._self._c;return t("h2",{attrs:{id:"migration-ui-router"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#migration-ui-router"}},[this._v("#")]),this._v(" migration ui-router")])},function(){var t=this._self._c;return t("p",[this._v("Using "),t("code",[this._v(' + diff --git a/docs/data/files-formats/asciidoc-infos.html b/docs/data/files-formats/asciidoc-infos.html index faa235f6..db2c8dca 100644 --- a/docs/data/files-formats/asciidoc-infos.html +++ b/docs/data/files-formats/asciidoc-infos.html @@ -7,7 +7,7 @@ - + @@ -27,6 +27,6 @@ →

- + diff --git a/docs/data/files-formats/json.html b/docs/data/files-formats/json.html index 679be2d4..91cdcd78 100644 --- a/docs/data/files-formats/json.html +++ b/docs/data/files-formats/json.html @@ -7,7 +7,7 @@ - + @@ -37,6 +37,6 @@ →

- + diff --git a/docs/data/files-formats/markdown-from-gitlab.html b/docs/data/files-formats/markdown-from-gitlab.html index 2cff6f8a..bdad5646 100644 --- a/docs/data/files-formats/markdown-from-gitlab.html +++ b/docs/data/files-formats/markdown-from-gitlab.html @@ -7,7 +7,7 @@ - + @@ -209,6 +209,6 @@ →

- + diff --git a/docs/data/files-formats/markdown-infos.html b/docs/data/files-formats/markdown-infos.html index 986b7cb3..c8f0ff50 100644 --- a/docs/data/files-formats/markdown-infos.html +++ b/docs/data/files-formats/markdown-infos.html @@ -7,7 +7,7 @@ - + @@ -43,6 +43,6 @@ →

- + diff --git a/docs/data/files-formats/xml.html b/docs/data/files-formats/xml.html index dce80c1e..5cd7abdc 100644 --- a/docs/data/files-formats/xml.html +++ b/docs/data/files-formats/xml.html @@ -7,7 +7,7 @@ - + @@ -38,6 +38,6 @@ →

- + diff --git a/docs/data/files-formats/yaml.html b/docs/data/files-formats/yaml.html index 39ef5596..8afde3f3 100644 --- a/docs/data/files-formats/yaml.html +++ b/docs/data/files-formats/yaml.html @@ -7,7 +7,7 @@ - + @@ -56,6 +56,6 @@

- + diff --git a/docs/data/index.html b/docs/data/index.html index 75555f93..782d3abe 100644 --- a/docs/data/index.html +++ b/docs/data/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

# Data

- + diff --git a/docs/devops/devops-accelerate.html b/docs/devops/devops-accelerate.html index 4289dc34..c1865e0c 100644 --- a/docs/devops/devops-accelerate.html +++ b/docs/devops/devops-accelerate.html @@ -7,7 +7,7 @@ - + @@ -81,6 +81,6 @@ →

- + diff --git a/docs/devops/devops-metrics.html b/docs/devops/devops-metrics.html index 8eb4ba78..2a4434db 100644 --- a/docs/devops/devops-metrics.html +++ b/docs/devops/devops-metrics.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/devops/devops-overview.html b/docs/devops/devops-overview.html index c24e8441..acc4d6d8 100644 --- a/docs/devops/devops-overview.html +++ b/docs/devops/devops-overview.html @@ -7,7 +7,7 @@ - + @@ -53,6 +53,6 @@ →

- + diff --git a/docs/devops/docker.html b/docs/devops/docker.html index 3f48e8f3..532ac0df 100644 --- a/docs/devops/docker.html +++ b/docs/devops/docker.html @@ -7,7 +7,7 @@ - + @@ -272,6 +272,6 @@ →

- + diff --git a/docs/devops/github-actions.html b/docs/devops/github-actions.html index ee1d1cbb..fa51f907 100644 --- a/docs/devops/github-actions.html +++ b/docs/devops/github-actions.html @@ -7,7 +7,7 @@ - + @@ -31,6 +31,6 @@ →

- + diff --git a/docs/devops/index.html b/docs/devops/index.html index b2e654a7..d89b165c 100644 --- a/docs/devops/index.html +++ b/docs/devops/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

# DevOps

DevOps Pipeline

- + diff --git a/docs/devops/kubernetes.html b/docs/devops/kubernetes.html index 683f4850..8e38b2ad 100644 --- a/docs/devops/kubernetes.html +++ b/docs/devops/kubernetes.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/devops/paas/heroku/heroku-angularjs.html b/docs/devops/paas/heroku/heroku-angularjs.html index 7c96244a..19fd6d6f 100644 --- a/docs/devops/paas/heroku/heroku-angularjs.html +++ b/docs/devops/paas/heroku/heroku-angularjs.html @@ -7,7 +7,7 @@ - + @@ -43,6 +43,6 @@ →

- + diff --git a/docs/devops/paas/heroku/heroku-helper.html b/docs/devops/paas/heroku/heroku-helper.html index 67b855d4..ab40d232 100644 --- a/docs/devops/paas/heroku/heroku-helper.html +++ b/docs/devops/paas/heroku/heroku-helper.html @@ -7,7 +7,7 @@ - + @@ -35,6 +35,6 @@ →

- + diff --git a/docs/devops/paas/heroku/heroku-sendgrid-mailer.html b/docs/devops/paas/heroku/heroku-sendgrid-mailer.html index 31844712..a322cbad 100644 --- a/docs/devops/paas/heroku/heroku-sendgrid-mailer.html +++ b/docs/devops/paas/heroku/heroku-sendgrid-mailer.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@

- + diff --git a/docs/divers/divers-articles.html b/docs/divers/divers-articles.html index 0bfd0f25..51fe8cdf 100644 --- a/docs/divers/divers-articles.html +++ b/docs/divers/divers-articles.html @@ -7,7 +7,7 @@ - + @@ -15,7 +15,7 @@ GitHub

# divers - articles

# comparatif des frameworks / lib dispo pour Js

framework_javascript.pdf

angular vs backbone & ember

MVC vs MVVM vs MVP by IgorMinar

# Angular 2.0 - contenu ?

comparatif

# npm dependency house of cards

One programmer almost broke the internet by deleting 11 lines of code

11 lignes de codes qui disparaissent et ce sont des centaines de projets open source qui sont mis à mal : korben.info

# evergreen browsers

evergreen-browsers

# guerre des navigateurs

The third browser war is over and it's a bloodshed - Daniel Glazman - WEB2DAY 2016

A été chairman au CSS working group, (sepcs HTML2, 4, CSS2 et 3). Connait bien le processus de standardisation de l'intérieur

A bossé chez Netscape

Au tout début (années 90), rien n'était standardisé (non cross device, non cross platform, non cross device)

Contexte

  • HTML+, nov 1993
  • HTML4, dec 1997 (1er vrai standard)
  • CSS1, dec 1996 (idée de décoreller la présentation du contenu)
  • CSS2, may 1998
  • IE avait jscript et pas JavaScript

1994

W3C consortium industriel (fondé 19941001 par MIT), chaque membre représente les intérêts industriels de son employeur

1995

beaucoup de conflits

processus de standardisation

  • prime au premier arrivant, au premier standardisant, et surtout au premier shipant (le 1er à déployer)
  • la pratique de Microsoft est de proposer un standard au moment où ils déploient pour forcer la direction

1997

la situation se calme quand la personne chargée de mener la politique de MS est changé de poste

2003

AOL qui possède Netscape licencie tout le monde.

IE reste tout seul, et du coup sans concurrence ne fait plus rien. (MS se concentre également sur Longhorn / Vista pendant 8 ans)

Rien de 2003 à 2008 sauf pour l'internationalisation.

Mozilla démarre gentiment et surtout tout petit (5 personnes)

Le W3C se focus sur le web sémantique et XHTML.

Apple annonce webkit (fork de KHTML)

Opéra a Presto

Google bosse sur webkit

2010

processus de standardisation

  • la pratique des débuts (soumettre et déployer le même jour) est terminée
  • on soumet et on discute pour avoir une solution la plus avantageuse possible
  • on implémente en parallèle en espérant que ça dévie pas trop pour conserver le first mover advantage
  • le web standard project pousse pour l'adoption des standards qui devient un argument commercial
  • la standardisation devient un prérequis dans la loi fédérale pour les produits liés à l'état fédéral

2013

Blink est forké depuis Webkit par Google et Opera

2016

Chrome est un semi-monopole

Deux nouveaux entrants :

  • LG (groupe coréen) pour des montres avec un screen circulaires (veulent y adapter les CSS)
  • Brave, un navigateur basé sur Blink écrit par Brandon Eich (inventeur de JavaScript)

moteurs de rendus

- modern standards cross platform speed
Gecko OK OK OK OK
WebKit OK OK OK OK
Blink OK OK OK OK
Edge OK OK KO OK
Servo OK OK OK OK

Servo écrit en Rust est le petit nouveau. MultiThreadé et layout parallèle. Ultra performant. Va probablement beaucoup changer la donne sur mobile. +

# divers - articles

# comparatif des frameworks / lib dispo pour Js

framework_javascript.pdf

angular vs backbone & ember

MVC vs MVVM vs MVP by IgorMinar

# Angular 2.0 - contenu ?

comparatif

# npm dependency house of cards

One programmer almost broke the internet by deleting 11 lines of code

11 lignes de codes qui disparaissent et ce sont des centaines de projets open source qui sont mis à mal : korben.info

# evergreen browsers

evergreen-browsers

# guerre des navigateurs

The third browser war is over and it's a bloodshed - Daniel Glazman - WEB2DAY 2016

A été chairman au CSS working group, (sepcs HTML2, 4, CSS2 et 3). Connait bien le processus de standardisation de l'intérieur

A bossé chez Netscape

Au tout début (années 90), rien n'était standardisé (non cross device, non cross platform, non cross device)

Contexte

  • HTML+, nov 1993
  • HTML4, dec 1997 (1er vrai standard)
  • CSS1, dec 1996 (idée de décoreller la présentation du contenu)
  • CSS2, may 1998
  • IE avait jscript et pas JavaScript

1994

W3C consortium industriel (fondé 19941001 par MIT), chaque membre représente les intérêts industriels de son employeur

1995

beaucoup de conflits

processus de standardisation

  • prime au premier arrivant, au premier standardisant, et surtout au premier shipant (le 1er à déployer)
  • la pratique de Microsoft est de proposer un standard au moment où ils déploient pour forcer la direction

1997

la situation se calme quand la personne chargée de mener la politique de MS est changé de poste

2003

AOL qui possède Netscape licencie tout le monde.

IE reste tout seul, et du coup sans concurrence ne fait plus rien. (MS se concentre également sur Longhorn / Vista pendant 8 ans)

Rien de 2003 à 2008 sauf pour l'internationalisation.

Mozilla démarre gentiment et surtout tout petit (5 personnes)

Le W3C se focus sur le web sémantique et XHTML.

Apple annonce webkit (fork de KHTML)

Opéra a Presto

Google bosse sur webkit

2010

processus de standardisation

  • la pratique des débuts (soumettre et déployer le même jour) est terminée
  • on soumet et on discute pour avoir une solution la plus avantageuse possible
  • on implémente en parallèle en espérant que ça dévie pas trop pour conserver le first mover advantage
  • le web standard project pousse pour l'adoption des standards qui devient un argument commercial
  • la standardisation devient un prérequis dans la loi fédérale pour les produits liés à l'état fédéral

2013

Blink est forké depuis Webkit par Google et Opera

2016

Chrome est un semi-monopole

Deux nouveaux entrants :

  • LG (groupe coréen) pour des montres avec un screen circulaires (veulent y adapter les CSS)
  • Brave, un navigateur basé sur Blink écrit par Brandon Eich (inventeur de JavaScript)

moteurs de rendus

- modern standards cross platform speed
Gecko OK OK OK OK
WebKit OK OK OK OK
Blink OK OK OK OK
Edge OK OK KO OK
Servo OK OK OK OK

Servo écrit en Rust est le petit nouveau. MultiThreadé et layout parallèle. Ultra performant. Va probablement beaucoup changer la donne sur mobile. Meilleure vitesse mais surtout meilleure conso. (d'où la collaboration Mozilla / Samsung).

Opera a abandonné Presto et est passé sur Blink

Un process par tab, chaque process multithreadé + layout parallèle = gains x30 à x50.

part de marché des navigateurs

Tout device :

  • Chrome 58.7%
  • Safari 12.7%
  • IE + Edge 10.3%
  • Firefox 10.0%
  • Opera 3.2%

La cause c'est les centaines de millions de portables low cost utilisés en Asie et en Afrique (tous Android)

Crée un énorme avantage pour le process de standardisation pour Google.

processus de standardisation

  • Les coréens de LG jouent le jeu
  • MS est devenu l'élève modèle
  • Google se met à se comporter comme MS en 95. Ils shipent et démerdez-vous. Tant que c'est "good enough" pour eux c'est ok.
  • ex avec Web Components (Google en a besoin pour GMail qui est ultra complexe) qui est fait pour eux uniquement. Ils se foutent de la standardisation. Fait très vite, très mal.

web OS

ne croit pas à leur réussite :

  • le principe de sandbox est vital pour des raisons de sécurité
  • le lien direct des browsers aux drivers sans réelle couche OS marche très mal

# evol web impact desktop

gif dematerialisation

# site listes articles

putain de code

# metier developpeur

Entre industrialisation et artisanat, le métier de développeur. - Arnaud Lemaire - Agile Pays Basque 2018 slides

Définition ingénierie :

"The engineering method is the use of heuristics to cause the best change in a poorly understood or uncertain situation within the available resources."

Billy Vaughn Koen in Definition of the Engineering Method

Normalement le terrain (les practitioners) drivent les académiques qui prennent compte de leurs retours pour expliquer comment fonctionner.

En dev logiciel depuis 40 ans on fait l'inverse, l'académique dit il faut faire comme ça, et le terrain dit que ça ne fonctionne pas.

On passe du domaine du problème au domaine de solution via l'ingénierie.

Pour transposer au dev il remplace le terme ingénierie par développement.

"Essentially, all models are wrong, but some are useful."

Box, George E.P.; Norman R. Draper in Empirical Model-Building and Response (1987)

Pourquoi ? Parce que tous les modèles sont des simplifications de la réalité.

Problème dans en mode client/fournisseur c'est que le client adore venir avec ses propres modèles obsolètes et inadaptés.

Le problem space a une vitesse de changement beaucoup plus lente que le solution space qui a lui une vitesse de changement extrême.

Le problème c'est que les gens cherchent à modéliser le solution space au lieu de modéliser le solution space.

"Models are useless, modeling is everything"

En tant que dev on doit discuter du problem space avec le business et pas du solution space entre nous.

Normalement le client n'a pas à imposer une solution technique, c'est pas son métier c'est celui du dev.

Il faut aller chercher la spécifité métier sur chaque projet. C'est le DDD (Domain Driver Dev).

Ne s'étudie pas. Ne pas se restreindre à son espace de confort (qui est dans la solution zone).

En logiciel on n'a pas d'humains dans la production. Qu'est-ce qu'il veut dire par là :

  • En ingénierie la finalité est de produire une documentation expliquant le design.
  • Quand le design est ok, il est donné à l'équipe de production (aux skills différentes)
  • L'équipe de prod construit le produit

Image des ingénieurs qui pondent des specs filées aux grouillots qui produisent.

Citation de What is Software Design ? Jack W. Reeves

Qui dit que c'est le code qui est la spec. Le build est réalisé par le compilateur.

Living Documentation (reconstruire le design à partir du code source) (ex: asciidoctor)

On prend le code source et on en tire une modélisation et surtout pas l'inverse.

"Any tool that lets a non-programmer buld executable programs will eventually become sufficiently complicated that the user is effectively a programmer"

The Verraes Hypothesis.

C'est l'example de rational rose et UML où on pouvait soi-disant générer du soft utilisable sur la base de diagrammes UML.

Ne fonctionne pas.

Engineering is about feedback loop.

De l'empirical au defined. Empirical on fait le prototype en premier et defined on fait les specs upfront.

La différence entre les deux c'est le cout du prototypage qui est très faible en empirical et très cher en upfront.

En logiciel notre cout est très faible (c'est le compilo qui produit) mais on fonctionne en specs upfront.

Ce qui coute très cher c'est la longueur de la boucle de feedback, sauf lorsque le cout du prototype est énorme (avionnique)

Le seul moyen de savoir que ça marche c'est de tester avant.

Pratiques de l'extreme programming pour avoir plein de feedback loops.

Quelque chose à de la valeur seulement lorsqu'il a été livré.

Focus sur CI voire Continuous Delivery.

Pas possible faire du CD sans tests.

Constraint theory, dans un système séquentiel si une étape est un goulot d'étranglement il ralentit l'ensemble.

"Adding human resources to a late software project makes it later", Fred Brooks (The Mythical Man-Month 1975)

"pull based approach" C'est à l'étape en contrainte de tirer le travail plutôt que ce soit les étapes précédentes essaient de bourrer l'étape en contrainte.

"The quality of today is the productivity of tomorrow"

Jean-Baptiste Dusseaut @BodySplash

La surqualité n'existe pas, soit on en a soit on en a pas.

Knows your fundamentals not your tools.

Engineering is about designing solution.

Go beyond Clean code.

Our job is to create application, not writing beautiful code.

# nb de développeurs

4,7 millions de développeurs en Europe, Londres et Paris en tête : blog.jobtic.fr

La moitié du temps des développeurs perdue sur du mauvais code - www.zdnet.fr - 20180914

La société estime à 18 millions le nombre de développeurs dans le monde chacun contribuant au PIB à hauteur de 51.000 dollars chaque année, pour un total de 918 milliards de dollars au niveau mondial

Combien y a-t-il de professionnels dans la population mondiale de développeurs ? : developpez.com

En 2014, IDC estimait qu’il y avait environ 18,5 millions de développeurs dans le monde et qu’environ 11 millions d’entre eux étaient des professionnels et 7,5 millions des amateurs.

La firme Evans Data, pour sa part, révélait dans un rapport de 2016 sur l’étude de la population mondiale des développeurs et sa répartition géographique qu’il y avait 21 millions de développeurs sur la planète.

94 % des développeurs étaient des hommes et seulement 4 % des femmes ;

34 % des développeurs étaient localisés en Asie, 30 % en Europe, 25 % en Amérique du Nord, 5 % en Amérique du Sud, 4 % en Afrique et 2 % en Océanie.

la majorité des développeurs étaient des professionnels (77 %), mais qu’une partie non négligeable d’entre eux était formée d’amateurs (23 %).

(Mobile, IoT, Desktop et Cloud) 7 % travaillent dans les 4 domaines, 23 % dans 3 domaines, 36 % dans 2 domaines et 34 % dans 1 domaine

17 % de ces développeurs avaient moins d’un an d’expérience, 43 % d’entre eux avaient de 1 à 6 ans d’expérience et 47 % d’entre eux avaient plus de 6 années d’expérience.

Évaluation du nombre annuel de jeunes diplômés en STIC - munci.org - 2012

  • AU MINIMUM 4000 bac+2 + 2000 bac+3 + 4800 masters + 7400 ingénieurs, SOIT AU MINIMUM 18 000 JEUNES DIPLÔMES en STIC
  • selon le Syntec Numérique, le système éducatif produit autour de "16 000 ingénieurs informaticiens par an"
  • selon l’association Pasc@line : "on compte 15.000 ingénieurs formés par an en France dans le secteur du numérique" @@ -38,6 +38,6 @@ →

- + diff --git a/docs/divers/divers-dev-ethics.html b/docs/divers/divers-dev-ethics.html index 231fca24..228ccf33 100644 --- a/docs/divers/divers-dev-ethics.html +++ b/docs/divers/divers-dev-ethics.html @@ -7,7 +7,7 @@ - + @@ -15,7 +15,7 @@ GitHub

# divers - dev-ethics

don't know right know how to classify all theses subjects ...

# Dev ethics

Microsoft - casier judiciaire - sebsauvage.net

Software development, responsibility and ethics: the coming crisis (Richard Fontana) : Devoxx France 2016

De l’importance de savoir dire non - 20170831

La sentence est tombée. James Liang, un développeur impliqué dans le scandale Volkswagen, a été condamné à 40 mois de prison et 200 000 dollars d’amende.

Scandale Volkswagen : un tribunal allemand condamne le constructeur à 1 milliard d'euros d'amende, Dans l'affaire impliquant son logiciel de tricherie - www.developpez.com

GB: une erreur dans le dépistage du cancer du sein aurait écourté 270 vies - www.sciencesetavenir.fr - 20180502

Tesla's autopilot probed by government after crash kills driver

Accident mortel d'un Uber autonome : cauchemar des constructeurs et interrogations en série

D'après les premiers éléments communiqués par la police locale, la voiture autonome roulait à 40 mp/h (65 km/h) et n'a pas freiné avant de percuter la piétonne de 49 ans, qui traversait en dehors du passage piéton.

un opérateur était également présent dans le véhicule et pouvait reprendre la main sur la conduite

La question de la responsabilité de ce conducteur de secours sera donc posée dans les jours à venir. Les conducteurs sont en effet censés garder le contrôle de leur véhicule en permanence.

Les États-Unis ont connu la plus grosse fuite de données des électeurs jamais observée

Les dossiers médicaux de 150 000 patients américains en accès libre sur le cloud d’Amazon : 20171012

la société PHM (Patient Home Monitoring) [...] Amazon S3 en accès libre.

47,5Go de données ont été exposés publiquement. 316 363 fichiers PDF

contenant les données personnelles des patients, nom, prénom, date de naissance, adresse, numéro de téléphone, les résultats de tests sanguins hebdomadaires, le nom du praticien...

Pour rappel, en France, il n’est pas légalement possible d’héberger des données de santé chez Amazon. Seuls les hébergeurs agréés (et prochainement certifiés) peuvent héberger des données de santé pour le compte d’un tiers.

En Europe, [...] jusqu’à 20 millions d’euros ou 4 % du chiffre d’affaire mondial

un tel incident survenant dans un établissement de soins Français, doit faire l’objet d’une déclaration sur le portail https://signalement.social-sante.gouv.fr/

Toyota Unintended Acceleration and the Big Bowl of “Spaghetti” Code 20131107

After reviewing Toyota’s software engineering process and the source code for the 2005 Toyota Camry, both concluded +

# divers - dev-ethics

don't know right know how to classify all theses subjects ...

# Dev ethics

Microsoft - casier judiciaire - sebsauvage.net

Software development, responsibility and ethics: the coming crisis (Richard Fontana) : Devoxx France 2016

De l’importance de savoir dire non - 20170831

La sentence est tombée. James Liang, un développeur impliqué dans le scandale Volkswagen, a été condamné à 40 mois de prison et 200 000 dollars d’amende.

Scandale Volkswagen : un tribunal allemand condamne le constructeur à 1 milliard d'euros d'amende, Dans l'affaire impliquant son logiciel de tricherie - www.developpez.com

GB: une erreur dans le dépistage du cancer du sein aurait écourté 270 vies - www.sciencesetavenir.fr - 20180502

Tesla's autopilot probed by government after crash kills driver

Accident mortel d'un Uber autonome : cauchemar des constructeurs et interrogations en série

D'après les premiers éléments communiqués par la police locale, la voiture autonome roulait à 40 mp/h (65 km/h) et n'a pas freiné avant de percuter la piétonne de 49 ans, qui traversait en dehors du passage piéton.

un opérateur était également présent dans le véhicule et pouvait reprendre la main sur la conduite

La question de la responsabilité de ce conducteur de secours sera donc posée dans les jours à venir. Les conducteurs sont en effet censés garder le contrôle de leur véhicule en permanence.

Les États-Unis ont connu la plus grosse fuite de données des électeurs jamais observée

Les dossiers médicaux de 150 000 patients américains en accès libre sur le cloud d’Amazon : 20171012

la société PHM (Patient Home Monitoring) [...] Amazon S3 en accès libre.

47,5Go de données ont été exposés publiquement. 316 363 fichiers PDF

contenant les données personnelles des patients, nom, prénom, date de naissance, adresse, numéro de téléphone, les résultats de tests sanguins hebdomadaires, le nom du praticien...

Pour rappel, en France, il n’est pas légalement possible d’héberger des données de santé chez Amazon. Seuls les hébergeurs agréés (et prochainement certifiés) peuvent héberger des données de santé pour le compte d’un tiers.

En Europe, [...] jusqu’à 20 millions d’euros ou 4 % du chiffre d’affaire mondial

un tel incident survenant dans un établissement de soins Français, doit faire l’objet d’une déclaration sur le portail https://signalement.social-sante.gouv.fr/

Toyota Unintended Acceleration and the Big Bowl of “Spaghetti” Code 20131107

After reviewing Toyota’s software engineering process and the source code for the 2005 Toyota Camry, both concluded that the system was defective and dangerous, riddled with bugs and gaps in its failsafes that led to the root cause of the crash.

...

Jean Bookout and her friend and passenger Barbara Schwarz were exiting Interstate Highway 69 in Oklahoma, when she lost throttle control of her 2005 Camry.

...

Schwarz died of her injuries; Bookout spent five months recovering from head and back injuries.

...

Michael Barr, a well-respected embedded software specialist, spent more than 20 months reviewing Toyota’s source code @@ -32,6 +32,6 @@ →

- + diff --git a/docs/divers/divers-outil-veille-techno.html b/docs/divers/divers-outil-veille-techno.html index 15f13e85..08d54083 100644 --- a/docs/divers/divers-outil-veille-techno.html +++ b/docs/divers/divers-outil-veille-techno.html @@ -7,7 +7,7 @@ - + @@ -15,7 +15,7 @@ GitHub

# divers - veille techno outils

# twitter.com

twitter.com/Marco46Veille

# veille en push sur les projets

# sibbel.com (projets GitHub)

sibbell.com

Se base sur les stars et les watchs du compte GitHub associé.

Peut rater des updates si les maintainers utilisent le système de release puis l'abandonnent.

# libraries.io (packages registries)

libraries.io

Surveille les registry pour check les packages déposés.

# liens outils online

www.thoughtworks.com/radar : site proposant un radar des technos pour la veille techno (maj annuelle)

fineinfo.net

Software advice from Dr. Gleb Bahmutov PhD

The Clean Code Blog by Robert C. Martin (Uncle Bob)

web-tambouille.fr

See what the GitHub community is most excited about today.

blog.github.com

# JavaScript

bestof.js.org

grab data from GitHub repos

bestof.js.org weekly newsletter

Get the latest JS rankings in your inbox every week

Fun Fun Function

JavaScript scene on medium.com

Dan Abramov on medium.com

/r/javascript/

Sébastien Lorber newsletter (React and general stuff)

swyx blog (React dev, lots of general culture)

# online books

2016 frontend handbook

2017 frontend handbook

2018 frontend handbook

frontend guide

# skills and technos lists

sindresorhus awesome lists

Front-end-Developer-Interview-Questions

a-roadmap-to-becoming-a-web-developer-in-2017

google dev fundamentals

# articles

How I stay up-to-date as a Developer : hackernoon.com

How to become a better hacker : glebbahmutov.com : 20160127

Web Development in 2017

  • Frontend Development

    • the "App" model is on the decline
    • technology and ecosystem is there now for ambitious SPA frontends
    • 3 major frameworks (Vue.js, React and Angular)
    • frontend can then compile it into native mobile apps
  • Backend Development

  • Language Choices

    • JavaScript nowadays is not merely a language, but the web application platform
    • plenty of languages to choose from, all of them transpiling to JavaScript at the end of the day
    • NoSQL document db are rising because they are just json-storage in the eyes of backend dev and it is a lot easier to manage then LAMP stacks
  • The Future

    • a single team of node.js backend developers can satisfy all your backend needs
    • still can’t fully believe it by myself (used to hate JavaScript, loving Elixir and Rust), but I must reiterate it again: JS has won

# forums

Stackoverflow hottest questions

Stackoverflow survey 2018

Hacker news

# devops

devops.com

Accelerate - Nicole Forsgren, Jez Humble and Gene Kim - 20180327

Scientific study giving results and methodology about the puppet.com states of Devops from 2014 to 2017 (the books authors contributed to theses studies)

Martin Fowler preface

The state of devops 2017 - puppet.com

# divers - veille techno outils

# twitter.com

twitter.com/Marco46Veille

# veille en push sur les projets

# sibbel.com (projets GitHub)

sibbell.com

Se base sur les stars et les watchs du compte GitHub associé.

Peut rater des updates si les maintainers utilisent le système de release puis l'abandonnent.

# libraries.io (packages registries)

libraries.io

Surveille les registry pour check les packages déposés.

# liens outils online

www.thoughtworks.com/radar : site proposant un radar des technos pour la veille techno (maj annuelle)

fineinfo.net

Software advice from Dr. Gleb Bahmutov PhD

The Clean Code Blog by Robert C. Martin (Uncle Bob)

web-tambouille.fr

See what the GitHub community is most excited about today.

blog.github.com

# JavaScript

bestof.js.org

grab data from GitHub repos

bestof.js.org weekly newsletter

Get the latest JS rankings in your inbox every week

Fun Fun Function

JavaScript scene on medium.com

Dan Abramov on medium.com

/r/javascript/

Sébastien Lorber newsletter (React and general stuff)

swyx blog (React dev, lots of general culture)

# online books

2016 frontend handbook

2017 frontend handbook

2018 frontend handbook

frontend guide

# skills and technos lists

sindresorhus awesome lists

Front-end-Developer-Interview-Questions

a-roadmap-to-becoming-a-web-developer-in-2017

google dev fundamentals

# articles

How I stay up-to-date as a Developer : hackernoon.com

How to become a better hacker : glebbahmutov.com : 20160127

Web Development in 2017

  • Frontend Development

    • the "App" model is on the decline
    • technology and ecosystem is there now for ambitious SPA frontends
    • 3 major frameworks (Vue.js, React and Angular)
    • frontend can then compile it into native mobile apps
  • Backend Development

  • Language Choices

    • JavaScript nowadays is not merely a language, but the web application platform
    • plenty of languages to choose from, all of them transpiling to JavaScript at the end of the day
    • NoSQL document db are rising because they are just json-storage in the eyes of backend dev and it is a lot easier to manage then LAMP stacks
  • The Future

    • a single team of node.js backend developers can satisfy all your backend needs
    • still can’t fully believe it by myself (used to hate JavaScript, loving Elixir and Rust), but I must reiterate it again: JS has won

# forums

Stackoverflow hottest questions

Stackoverflow survey 2018

Hacker news

# devops

devops.com

Accelerate - Nicole Forsgren, Jez Humble and Gene Kim - 20180327

Scientific study giving results and methodology about the puppet.com states of Devops from 2014 to 2017 (the books authors contributed to theses studies)

Martin Fowler preface

The state of devops 2017 - puppet.com

- + diff --git a/docs/divers/divers-pdf.html b/docs/divers/divers-pdf.html index a3827580..c7460380 100644 --- a/docs/divers/divers-pdf.html +++ b/docs/divers/divers-pdf.html @@ -7,7 +7,7 @@ - + @@ -15,7 +15,7 @@ GitHub

# divers - pdf

# reduce pdf size

How can I reduce the file size of a scanned PDF file? - askubuntu.com

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
 
1

with -dPDFSETTINGS=/ebook works well, a 15mo 300dpi file is reduced to a 3mo 150dpi file.

# merge several pdf in one

How to merge several PDF files? - askubuntu.com

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf  file1.pdf file2.pdf
 
1
gs         starts the Ghostscript program.
 -dBATCH    once Ghostscript processes the PDF files, it should exit.
@@ -37,6 +37,6 @@
         
         →
       

- + diff --git a/docs/divers/divers-videos.html b/docs/divers/divers-videos.html index e78f91c2..9282030c 100644 --- a/docs/divers/divers-videos.html +++ b/docs/divers/divers-videos.html @@ -7,7 +7,7 @@ - + @@ -15,7 +15,7 @@ GitHub - + diff --git a/docs/divers/freebox/freebox-videos.html b/docs/divers/freebox/freebox-videos.html index 1cdb8870..301c7623 100644 --- a/docs/divers/freebox/freebox-videos.html +++ b/docs/divers/freebox/freebox-videos.html @@ -7,7 +7,7 @@ - + @@ -15,15 +15,15 @@ GitHub

# freebox - videos

  • enregistrer via l'enregistreur normal
  • pour visionner avec VLC il faut avoir la vidéo en local
  • pour convertir en avi cf lien forum ubuntu

# freebox - videos

  • enregistrer via l'enregistreur normal
  • pour visionner avec VLC il faut avoir la vidéo en local
  • pour convertir en avi cf lien forum ubuntu
- + diff --git a/docs/divers/ia/ia.html b/docs/divers/ia/ia.html new file mode 100644 index 00000000..1c574b86 --- /dev/null +++ b/docs/divers/ia/ia.html @@ -0,0 +1,49 @@ + + + + + + IA | marlou knowledge base + + + + + + + +

# IA

# training

Yann LeCun about IA training on LinkedIn

Animals and humans get very smart very quickly with vastly smaller amounts of training data than current AI systems.
+
+Current LLMs are trained on text data that would take 20,000 years for a human to read.
+And still, they haven't learned that if A is the same as B, then B is the same as A.
+Humans get a lot smarter than that with comparatively little training data.
+Even corvids, parrots, dogs, and octopuses get smarter than that very, very quickly, with only 2 billion neurons and a few trillion "parameters."
+
+My money is on new architectures that would learn as efficiently as animals and humans.
+Using more text data (synthetic or not) is a temporary stopgap made necessary by the limitations of our current approaches.
+The salvation is in using sensory data, e.g. video, which has higher bandwidth and more internal structure.
+
+The total amount of visual data seen by a 2 year-old is larger than the amount of data used to train LLMs, but still pretty reasonable.
+2 years = 2x365x12x3600 or roughly 32 million seconds.
+We have 2 million optical nerve fibers, carrying roughly ten bytes per second each.
+That's a total of 6E14 bytes. The volume of data for LLM training is typically 1E13 tokens, which is about 2E13 bytes.
+It's a factor of 30.
+
+Importantly, there is more to learn from video than from text because it is more redundant.
+It tells you a lot about the structure of the world.
+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

TLDR : Next gen IA needs to use video instead of text.

To compare, see this Jean-Baptiste Kempf (VLC) interview about how video works.

  • an image is an array of pixel, each pixel is a color
  • a video is a collection of images (something between 24 to 60 images per second)
  • CODEC = compression decompression algorithm to send video.
  • Video pixel by pixel is around 10 to 40 Gb/s
  • the goal of CODEC is to divide 100, 200, ... 1K the bandwith used.
  • dividing bandwith is destroying information
  • the tech behind is based on how the human eyes behave, some colors are better seen then others, so we can delete some colors without downgrading the image seen.

Each CODEC behave the same way, they delete data not seen by eyes, and they seek data blocks that are redundant image by image or between images.

MPEG-1 (1993) ---> MPEG-2 (1995) = DVD ---> DIVX (1999) (=MPEG-4) ---> H.264 (2003) ---> HEVC (2013) ---> VP9 (2013)
+
1
  • H.264 is the most common CODEC used in the world, around 80% of usage.
  • HEVC is crippled by royalties, it remains unused on the web instead of television, around 5%.
  • VP9 created by Google, royalty free, opensource, Youtube and Facebook uses it.
  • AV1 then AV2 created by the Open Media Alliance initiated by Google.
  • AV1 is implemented by Dav1d, a VLC project, around 210K assembly LoC + 30K C LoC. This impl is widely used by GAFAM.

# misc

Guide ChatGPT pour développeurs

+ + + diff --git a/docs/divers/index.html b/docs/divers/index.html index a358362a..503f0a1c 100644 --- a/docs/divers/index.html +++ b/docs/divers/index.html @@ -7,7 +7,7 @@ - + @@ -15,7 +15,7 @@ GitHub

# Divers

- +

# Divers

+ diff --git a/docs/divers/licences/licences-WTFPL.html b/docs/divers/licences/licences-WTFPL.html index db8d58f4..7f5037a3 100644 --- a/docs/divers/licences/licences-WTFPL.html +++ b/docs/divers/licences/licences-WTFPL.html @@ -7,7 +7,7 @@ - + @@ -15,7 +15,7 @@ GitHub

# licences - WTFPL (do What The Fuck you want to Public Licence)

www.wtfpl.net

Pour une integration aux README.md de Git :

WTFPL

- + diff --git a/docs/divers/licences/licences-articles-opensource.html b/docs/divers/licences/licences-articles-opensource.html index 9b8be416..7218eac3 100644 --- a/docs/divers/licences/licences-articles-opensource.html +++ b/docs/divers/licences/licences-articles-opensource.html @@ -7,7 +7,7 @@ - + @@ -15,15 +15,15 @@ GitHub - + diff --git a/docs/divers/licences/licences-choose-a-licence.html b/docs/divers/licences/licences-choose-a-licence.html index 7fff3303..0099e067 100644 --- a/docs/divers/licences/licences-choose-a-licence.html +++ b/docs/divers/licences/licences-choose-a-licence.html @@ -7,7 +7,7 @@ - + @@ -15,7 +15,7 @@ GitHub - + diff --git a/docs/divers/raspberry/raspberry-overview.html b/docs/divers/raspberry/raspberry-overview.html index 68317027..d3d16e74 100644 --- a/docs/divers/raspberry/raspberry-overview.html +++ b/docs/divers/raspberry/raspberry-overview.html @@ -7,7 +7,7 @@ - + @@ -15,12 +15,12 @@ GitHub - + diff --git a/docs/index.html b/docs/index.html index e8a46bc6..55dd7e01 100644 --- a/docs/index.html +++ b/docs/index.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@

# memo-dev

memo-dev available here

This website is a personal reminder for work. Aka : memo, knowledge base, cheatsheets, til, ...

Sometimes in english, et parfois en français ...

Writing things to learn, and uses this book as a knowledge index.

Any comments welcome ...

Others similar repo linked there

Data

Knowledge about data and files formats.

DevOps

The DevOps practices and related tools.

Divers

Section fourre-tout mais toujours liées à l'informatique ... Forcément !

Network

Knowledge about networks associated subjects. Low and high level.

Languages

Programming languages documentation and notes.

Platforms, frameworks and libs

Documentation and notes about platforms like Node or frameworks like Vue.

Security

Security subjects, encryption, auth, CORS, etc ...

Software Engineering

Must read lists (articles, books or authors) and fundamentals.

Systems

Stuff related to operating systems.

Tools

Various tools from Git to text editor and aso online tools.

Web

Everything about the web. Including languages, tools, concepts, etc ...

- + diff --git a/docs/languages/SQL/ACID.html b/docs/languages/SQL/ACID.html index ad49bab0..fdf4aca7 100644 --- a/docs/languages/SQL/ACID.html +++ b/docs/languages/SQL/ACID.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/SQL/postgre-setup.html b/docs/languages/SQL/postgre-setup.html index d66979a2..0238990b 100644 --- a/docs/languages/SQL/postgre-setup.html +++ b/docs/languages/SQL/postgre-setup.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@

- + diff --git a/docs/languages/css/css-block-element-modifier.html b/docs/languages/css/css-block-element-modifier.html index aad68e05..9d9634bd 100644 --- a/docs/languages/css/css-block-element-modifier.html +++ b/docs/languages/css/css-block-element-modifier.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/css/css-conventions.nommage.html.css.html b/docs/languages/css/css-conventions.nommage.html.css.html index 7328a9c8..7cf500ee 100644 --- a/docs/languages/css/css-conventions.nommage.html.css.html +++ b/docs/languages/css/css-conventions.nommage.html.css.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/css/css-overview.html b/docs/languages/css/css-overview.html index db9dc240..750dbcdc 100644 --- a/docs/languages/css/css-overview.html +++ b/docs/languages/css/css-overview.html @@ -7,7 +7,7 @@ - + @@ -57,6 +57,6 @@ →

- + diff --git a/docs/languages/css/css-preprocessors.html b/docs/languages/css/css-preprocessors.html index d0c2c3ae..fb2c8124 100644 --- a/docs/languages/css/css-preprocessors.html +++ b/docs/languages/css/css-preprocessors.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/css/css-selectors.html b/docs/languages/css/css-selectors.html index 833656e8..624be1ff 100644 --- a/docs/languages/css/css-selectors.html +++ b/docs/languages/css/css-selectors.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/languages/css/css-tips.html b/docs/languages/css/css-tips.html index edf56ad6..08a9c7f4 100644 --- a/docs/languages/css/css-tips.html +++ b/docs/languages/css/css-tips.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/languages/html/html-tips.html b/docs/languages/html/html-tips.html index ae82ee61..a3f0b7f6 100644 --- a/docs/languages/html/html-tips.html +++ b/docs/languages/html/html-tips.html @@ -7,7 +7,7 @@ - + @@ -23,6 +23,6 @@ →

- + diff --git a/docs/languages/index.html b/docs/languages/index.html index 10dcf4e4..842de563 100644 --- a/docs/languages/index.html +++ b/docs/languages/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

# Programming Languages

- + diff --git a/docs/languages/java/java-ant-tips.html b/docs/languages/java/java-ant-tips.html index 1087f407..7f9754b3 100644 --- a/docs/languages/java/java-ant-tips.html +++ b/docs/languages/java/java-ant-tips.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/java/java-jackson-cyclic-relationship.html b/docs/languages/java/java-jackson-cyclic-relationship.html index 4d2862f8..d3205393 100644 --- a/docs/languages/java/java-jackson-cyclic-relationship.html +++ b/docs/languages/java/java-jackson-cyclic-relationship.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/java/java-jpa-infos.html b/docs/languages/java/java-jpa-infos.html index e2b8ec47..d21edb32 100644 --- a/docs/languages/java/java-jpa-infos.html +++ b/docs/languages/java/java-jpa-infos.html @@ -7,7 +7,7 @@ - + @@ -31,6 +31,6 @@ →

- + diff --git a/docs/languages/java/java-security-links.html b/docs/languages/java/java-security-links.html index a0b8c3b3..92364597 100644 --- a/docs/languages/java/java-security-links.html +++ b/docs/languages/java/java-security-links.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/languages/js/ES6-overview.html b/docs/languages/js/ES6-overview.html index 5a34ecff..3d40216a 100644 --- a/docs/languages/js/ES6-overview.html +++ b/docs/languages/js/ES6-overview.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/js/ES6-promises.html b/docs/languages/js/ES6-promises.html index b839a7dd..a4db0a07 100644 --- a/docs/languages/js/ES6-promises.html +++ b/docs/languages/js/ES6-promises.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/js/ES6-proxies.html b/docs/languages/js/ES6-proxies.html index 0de48bab..ef90e4e4 100644 --- a/docs/languages/js/ES6-proxies.html +++ b/docs/languages/js/ES6-proxies.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/js/javascript-overview.html b/docs/languages/js/javascript-overview.html index 7f27d550..cd02d685 100644 --- a/docs/languages/js/javascript-overview.html +++ b/docs/languages/js/javascript-overview.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/js/js-best-practices.html b/docs/languages/js/js-best-practices.html index 944dee71..4fdd1ecb 100644 --- a/docs/languages/js/js-best-practices.html +++ b/docs/languages/js/js-best-practices.html @@ -7,7 +7,7 @@ - + @@ -115,6 +115,6 @@ →

- + diff --git a/docs/languages/js/js-browser-geolocalisation.html b/docs/languages/js/js-browser-geolocalisation.html index cf3c3866..64482d51 100644 --- a/docs/languages/js/js-browser-geolocalisation.html +++ b/docs/languages/js/js-browser-geolocalisation.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/js/js-closures.html b/docs/languages/js/js-closures.html index cc4debe2..170cd08c 100644 --- a/docs/languages/js/js-closures.html +++ b/docs/languages/js/js-closures.html @@ -7,7 +7,7 @@ - + @@ -158,6 +158,6 @@ →

- + diff --git a/docs/languages/js/js-database-memo.html b/docs/languages/js/js-database-memo.html index 3b0f9285..409a6ef7 100644 --- a/docs/languages/js/js-database-memo.html +++ b/docs/languages/js/js-database-memo.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/js/js-date.html b/docs/languages/js/js-date.html index 8a375672..f26ba78d 100644 --- a/docs/languages/js/js-date.html +++ b/docs/languages/js/js-date.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/js/js-doc.html b/docs/languages/js/js-doc.html index 75783577..27a50332 100644 --- a/docs/languages/js/js-doc.html +++ b/docs/languages/js/js-doc.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/js/js-double-negation.html b/docs/languages/js/js-double-negation.html index 1c5b540d..a15ca3ca 100644 --- a/docs/languages/js/js-double-negation.html +++ b/docs/languages/js/js-double-negation.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/js/js-download-files.html b/docs/languages/js/js-download-files.html index 39341dcb..5e120f20 100644 --- a/docs/languages/js/js-download-files.html +++ b/docs/languages/js/js-download-files.html @@ -7,7 +7,7 @@ - + @@ -43,6 +43,6 @@ →

- + diff --git a/docs/languages/js/js-duck-typing.html b/docs/languages/js/js-duck-typing.html index ab4c7b48..89ef3ff6 100644 --- a/docs/languages/js/js-duck-typing.html +++ b/docs/languages/js/js-duck-typing.html @@ -7,7 +7,7 @@ - + @@ -50,6 +50,6 @@ →

- + diff --git a/docs/languages/js/js-fetch-api.html b/docs/languages/js/js-fetch-api.html index a3944258..5be0177f 100644 --- a/docs/languages/js/js-fetch-api.html +++ b/docs/languages/js/js-fetch-api.html @@ -7,7 +7,7 @@ - + @@ -26,6 +26,6 @@ →

- + diff --git a/docs/languages/js/js-fonctions-anonymes-IIFE.html b/docs/languages/js/js-fonctions-anonymes-IIFE.html index cfd8deb2..df759f9f 100644 --- a/docs/languages/js/js-fonctions-anonymes-IIFE.html +++ b/docs/languages/js/js-fonctions-anonymes-IIFE.html @@ -7,7 +7,7 @@ - + @@ -27,6 +27,6 @@ →

- + diff --git a/docs/languages/js/js-function-invocation-patterns.html b/docs/languages/js/js-function-invocation-patterns.html index e9509af3..a166ebdd 100644 --- a/docs/languages/js/js-function-invocation-patterns.html +++ b/docs/languages/js/js-function-invocation-patterns.html @@ -7,7 +7,7 @@ - + @@ -120,6 +120,6 @@ →

- + diff --git a/docs/languages/js/js-iframe.html b/docs/languages/js/js-iframe.html index fdf1faa7..d86a3de2 100644 --- a/docs/languages/js/js-iframe.html +++ b/docs/languages/js/js-iframe.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/languages/js/js-math.html b/docs/languages/js/js-math.html index 4e9f4afd..0b3074b2 100644 --- a/docs/languages/js/js-math.html +++ b/docs/languages/js/js-math.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/languages/js/js-modules.html b/docs/languages/js/js-modules.html index 5a7a2b20..f0cf8ccd 100644 --- a/docs/languages/js/js-modules.html +++ b/docs/languages/js/js-modules.html @@ -7,7 +7,7 @@ - + @@ -95,6 +95,6 @@ →

- + diff --git a/docs/languages/js/js-named-f-vs-expr-f.html b/docs/languages/js/js-named-f-vs-expr-f.html index 1dc9a7a7..c96db2b4 100644 --- a/docs/languages/js/js-named-f-vs-expr-f.html +++ b/docs/languages/js/js-named-f-vs-expr-f.html @@ -7,7 +7,7 @@ - + @@ -40,6 +40,6 @@ →

- + diff --git a/docs/languages/js/js-prototype.html b/docs/languages/js/js-prototype.html index cf392a55..f971a418 100644 --- a/docs/languages/js/js-prototype.html +++ b/docs/languages/js/js-prototype.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/js/js-samples-and-miscs.html b/docs/languages/js/js-samples-and-miscs.html index 214767a6..8d6e093b 100644 --- a/docs/languages/js/js-samples-and-miscs.html +++ b/docs/languages/js/js-samples-and-miscs.html @@ -7,7 +7,7 @@ - + @@ -63,6 +63,6 @@ →

- + diff --git a/docs/languages/js/js-simple-logger.html b/docs/languages/js/js-simple-logger.html index 7708bbb5..4adaefe1 100644 --- a/docs/languages/js/js-simple-logger.html +++ b/docs/languages/js/js-simple-logger.html @@ -7,7 +7,7 @@ - + @@ -107,6 +107,6 @@ →

- + diff --git a/docs/languages/js/js-spa-software-architecture.html b/docs/languages/js/js-spa-software-architecture.html index 78da01ba..f3734873 100644 --- a/docs/languages/js/js-spa-software-architecture.html +++ b/docs/languages/js/js-spa-software-architecture.html @@ -7,7 +7,7 @@ - + @@ -54,6 +54,6 @@ →

- + diff --git a/docs/languages/js/js-understanding-this-keyword.html b/docs/languages/js/js-understanding-this-keyword.html index d5217943..9dae7874 100644 --- a/docs/languages/js/js-understanding-this-keyword.html +++ b/docs/languages/js/js-understanding-this-keyword.html @@ -7,7 +7,7 @@ - + @@ -71,6 +71,6 @@ →

- + diff --git a/docs/languages/js/js-web-storage.html b/docs/languages/js/js-web-storage.html index c169540b..637a45d6 100644 --- a/docs/languages/js/js-web-storage.html +++ b/docs/languages/js/js-web-storage.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/languages/js/js-webapp-build.html b/docs/languages/js/js-webapp-build.html index e96dfd4a..bfd7a075 100644 --- a/docs/languages/js/js-webapp-build.html +++ b/docs/languages/js/js-webapp-build.html @@ -7,7 +7,7 @@ - + @@ -34,6 +34,6 @@ →

- + diff --git a/docs/languages/js/ts-typescript-overview.html b/docs/languages/js/ts-typescript-overview.html index ff72f43f..d7c3fb0e 100644 --- a/docs/languages/js/ts-typescript-overview.html +++ b/docs/languages/js/ts-typescript-overview.html @@ -7,7 +7,7 @@ - + @@ -351,6 +351,6 @@ →

- + diff --git a/docs/languages/rust/rust-install.html b/docs/languages/rust/rust-install.html index 86e5c845..1c5242f3 100644 --- a/docs/languages/rust/rust-install.html +++ b/docs/languages/rust/rust-install.html @@ -7,7 +7,7 @@ - + @@ -82,6 +82,6 @@ →

- + diff --git a/docs/languages/rust/rust-overview.html b/docs/languages/rust/rust-overview.html index 03839ef6..8b1186b1 100644 --- a/docs/languages/rust/rust-overview.html +++ b/docs/languages/rust/rust-overview.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/network/index.html b/docs/network/index.html index 5c0a3a13..6ec66227 100644 --- a/docs/network/index.html +++ b/docs/network/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

# Network

- + diff --git a/docs/network/internet.html b/docs/network/internet.html index 0a09d16d..fdce6e23 100644 --- a/docs/network/internet.html +++ b/docs/network/internet.html @@ -7,7 +7,7 @@ - + @@ -21,6 +21,6 @@

- + diff --git a/docs/network/protocols/TCP.html b/docs/network/protocols/TCP.html index ca4d3e54..f4caf71f 100644 --- a/docs/network/protocols/TCP.html +++ b/docs/network/protocols/TCP.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/network/protocols/http.html b/docs/network/protocols/http.html index 320c170c..86e9150b 100644 --- a/docs/network/protocols/http.html +++ b/docs/network/protocols/http.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-SEO.html b/docs/platforms-frameworks-libs/angular-js/angular-js-SEO.html index 26261de9..37179de9 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-SEO.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-SEO.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-auth.html b/docs/platforms-frameworks-libs/angular-js/angular-js-auth.html index c9dd42c9..64d751db 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-auth.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-auth.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-best-practices.html b/docs/platforms-frameworks-libs/angular-js/angular-js-best-practices.html index 4cf701ff..0cd2c5b3 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-best-practices.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-best-practices.html @@ -7,7 +7,7 @@ - + @@ -26,6 +26,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-components.html b/docs/platforms-frameworks-libs/angular-js/angular-js-components.html index be66d0ce..c897ba8c 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-components.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-components.html @@ -7,7 +7,7 @@ - + @@ -29,6 +29,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-controllers.html b/docs/platforms-frameworks-libs/angular-js/angular-js-controllers.html index d6a71246..babef5b1 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-controllers.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-controllers.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-decorator.html b/docs/platforms-frameworks-libs/angular-js/angular-js-decorator.html index d92964ce..fad1edef 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-decorator.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-decorator.html @@ -7,7 +7,7 @@ - + @@ -65,6 +65,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-dep-inj.html b/docs/platforms-frameworks-libs/angular-js/angular-js-dep-inj.html index 616c7c40..32858144 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-dep-inj.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-dep-inj.html @@ -7,7 +7,7 @@ - + @@ -36,6 +36,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-directives.html b/docs/platforms-frameworks-libs/angular-js/angular-js-directives.html index 1b404301..cc732b7c 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-directives.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-directives.html @@ -7,7 +7,7 @@ - + @@ -77,6 +77,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-errors-exceptions.html b/docs/platforms-frameworks-libs/angular-js/angular-js-errors-exceptions.html index b0f38edc..32ac9d3f 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-errors-exceptions.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-errors-exceptions.html @@ -7,7 +7,7 @@ - + @@ -152,6 +152,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-init-app.html b/docs/platforms-frameworks-libs/angular-js/angular-js-init-app.html index 47c14ff2..d1dadddb 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-init-app.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-init-app.html @@ -7,7 +7,7 @@ - + @@ -57,6 +57,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-knowledge-overview.html b/docs/platforms-frameworks-libs/angular-js/angular-js-knowledge-overview.html index a72c2649..b3fdb6dd 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-knowledge-overview.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-knowledge-overview.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-lazy-downloading.html b/docs/platforms-frameworks-libs/angular-js/angular-js-lazy-downloading.html index 883cd2d8..5714e910 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-lazy-downloading.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-lazy-downloading.html @@ -7,7 +7,7 @@ - + @@ -30,6 +30,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-misc.html b/docs/platforms-frameworks-libs/angular-js/angular-js-misc.html index 1af6de41..7cb4a6c8 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-misc.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-misc.html @@ -7,7 +7,7 @@ - + @@ -50,6 +50,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-mobile.html b/docs/platforms-frameworks-libs/angular-js/angular-js-mobile.html index 918ccf2d..663fd006 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-mobile.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-mobile.html @@ -7,7 +7,7 @@ - + @@ -39,6 +39,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-module.html b/docs/platforms-frameworks-libs/angular-js/angular-js-module.html index 3d0e7008..0e8b6440 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-module.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-module.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-optimisation.html b/docs/platforms-frameworks-libs/angular-js/angular-js-optimisation.html index 16cc90d5..2f2e8fe2 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-optimisation.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-optimisation.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-promise.html b/docs/platforms-frameworks-libs/angular-js/angular-js-promise.html index b654d883..10f3487a 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-promise.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-promise.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-routing.html b/docs/platforms-frameworks-libs/angular-js/angular-js-routing.html index 909c80eb..1c272aff 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-routing.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-routing.html @@ -7,7 +7,7 @@ - + @@ -28,6 +28,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-services.html b/docs/platforms-frameworks-libs/angular-js/angular-js-services.html index fb601821..292a5e68 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-services.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-services.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-template-cache.html b/docs/platforms-frameworks-libs/angular-js/angular-js-template-cache.html index fe4ad7f1..e9feab13 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-template-cache.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-template-cache.html @@ -7,7 +7,7 @@ - + @@ -30,6 +30,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular-js/angular-js-testing.html b/docs/platforms-frameworks-libs/angular-js/angular-js-testing.html index 6bc359d8..26dddc0b 100644 --- a/docs/platforms-frameworks-libs/angular-js/angular-js-testing.html +++ b/docs/platforms-frameworks-libs/angular-js/angular-js-testing.html @@ -7,7 +7,7 @@ - + @@ -196,6 +196,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular/angular-migration-from-angular-js.html b/docs/platforms-frameworks-libs/angular/angular-migration-from-angular-js.html index 75af9dbb..5c3be82d 100644 --- a/docs/platforms-frameworks-libs/angular/angular-migration-from-angular-js.html +++ b/docs/platforms-frameworks-libs/angular/angular-migration-from-angular-js.html @@ -7,7 +7,7 @@ - + @@ -116,6 +116,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/angular/angular-overview.html b/docs/platforms-frameworks-libs/angular/angular-overview.html index a564e0d8..c14e07e7 100644 --- a/docs/platforms-frameworks-libs/angular/angular-overview.html +++ b/docs/platforms-frameworks-libs/angular/angular-overview.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/deno/deno-overview.html b/docs/platforms-frameworks-libs/deno/deno-overview.html index be109edc..3461126e 100644 --- a/docs/platforms-frameworks-libs/deno/deno-overview.html +++ b/docs/platforms-frameworks-libs/deno/deno-overview.html @@ -7,7 +7,7 @@ - + @@ -27,6 +27,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/index.html b/docs/platforms-frameworks-libs/index.html index c252116d..166d0212 100644 --- a/docs/platforms-frameworks-libs/index.html +++ b/docs/platforms-frameworks-libs/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

# Platforms, frameworks and libs

- + diff --git a/docs/platforms-frameworks-libs/node.js/nodejs-best-practices.html b/docs/platforms-frameworks-libs/node.js/nodejs-best-practices.html index 5442b6dc..1c11938e 100644 --- a/docs/platforms-frameworks-libs/node.js/nodejs-best-practices.html +++ b/docs/platforms-frameworks-libs/node.js/nodejs-best-practices.html @@ -7,7 +7,7 @@ - + @@ -30,6 +30,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/node.js/nodejs-express-project-structure.html b/docs/platforms-frameworks-libs/node.js/nodejs-express-project-structure.html index 8941aa25..f2a74195 100644 --- a/docs/platforms-frameworks-libs/node.js/nodejs-express-project-structure.html +++ b/docs/platforms-frameworks-libs/node.js/nodejs-express-project-structure.html @@ -7,7 +7,7 @@ - + @@ -82,6 +82,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/node.js/nodejs-handling-errors.html b/docs/platforms-frameworks-libs/node.js/nodejs-handling-errors.html index 36089a28..3c21520e 100644 --- a/docs/platforms-frameworks-libs/node.js/nodejs-handling-errors.html +++ b/docs/platforms-frameworks-libs/node.js/nodejs-handling-errors.html @@ -7,7 +7,7 @@ - + @@ -26,6 +26,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/node.js/nodejs-handling-files.html b/docs/platforms-frameworks-libs/node.js/nodejs-handling-files.html index bd52ab3f..849a7244 100644 --- a/docs/platforms-frameworks-libs/node.js/nodejs-handling-files.html +++ b/docs/platforms-frameworks-libs/node.js/nodejs-handling-files.html @@ -7,7 +7,7 @@ - + @@ -87,6 +87,6 @@ }
1
2
3
4
5
6
7
8
9

This code is using the experimental top level await feature, node needs to be executed with the --experimental-repl-await flag.

- + diff --git a/docs/platforms-frameworks-libs/node.js/nodejs-hello-world.html b/docs/platforms-frameworks-libs/node.js/nodejs-hello-world.html index c4fcdda4..f17fe2a6 100644 --- a/docs/platforms-frameworks-libs/node.js/nodejs-hello-world.html +++ b/docs/platforms-frameworks-libs/node.js/nodejs-hello-world.html @@ -7,7 +7,7 @@ - + @@ -43,6 +43,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/node.js/nodejs-links.html b/docs/platforms-frameworks-libs/node.js/nodejs-links.html index 034da795..8b25ac28 100644 --- a/docs/platforms-frameworks-libs/node.js/nodejs-links.html +++ b/docs/platforms-frameworks-libs/node.js/nodejs-links.html @@ -7,7 +7,7 @@ - + @@ -56,6 +56,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/node.js/nodejs-logging.html b/docs/platforms-frameworks-libs/node.js/nodejs-logging.html index 1ac7a577..8e492348 100644 --- a/docs/platforms-frameworks-libs/node.js/nodejs-logging.html +++ b/docs/platforms-frameworks-libs/node.js/nodejs-logging.html @@ -7,7 +7,7 @@ - + @@ -31,6 +31,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/node.js/nodejs-mock-via-express.html b/docs/platforms-frameworks-libs/node.js/nodejs-mock-via-express.html index 00522967..ce5403a4 100644 --- a/docs/platforms-frameworks-libs/node.js/nodejs-mock-via-express.html +++ b/docs/platforms-frameworks-libs/node.js/nodejs-mock-via-express.html @@ -7,7 +7,7 @@ - + @@ -149,6 +149,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/node.js/nodejs-modules.html b/docs/platforms-frameworks-libs/node.js/nodejs-modules.html index 14478ce0..929dedf2 100644 --- a/docs/platforms-frameworks-libs/node.js/nodejs-modules.html +++ b/docs/platforms-frameworks-libs/node.js/nodejs-modules.html @@ -7,7 +7,7 @@ - + @@ -30,6 +30,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/node.js/nodejs-rest-api-frameworks.html b/docs/platforms-frameworks-libs/node.js/nodejs-rest-api-frameworks.html index a328e74d..3b11cd9e 100644 --- a/docs/platforms-frameworks-libs/node.js/nodejs-rest-api-frameworks.html +++ b/docs/platforms-frameworks-libs/node.js/nodejs-rest-api-frameworks.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/play-framework/java-play-OAuth.html b/docs/platforms-frameworks-libs/play-framework/java-play-OAuth.html index a4b32a86..bf92964b 100644 --- a/docs/platforms-frameworks-libs/play-framework/java-play-OAuth.html +++ b/docs/platforms-frameworks-libs/play-framework/java-play-OAuth.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/play-framework/java-play-async.html b/docs/platforms-frameworks-libs/play-framework/java-play-async.html index 7ad1afee..0e3c852f 100644 --- a/docs/platforms-frameworks-libs/play-framework/java-play-async.html +++ b/docs/platforms-frameworks-libs/play-framework/java-play-async.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/play-framework/java-play-config-idea.html b/docs/platforms-frameworks-libs/play-framework/java-play-config-idea.html index d7e7d65a..a9990526 100644 --- a/docs/platforms-frameworks-libs/play-framework/java-play-config-idea.html +++ b/docs/platforms-frameworks-libs/play-framework/java-play-config-idea.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/play-framework/java-play-gestion-fichier-config-dev-prod.html b/docs/platforms-frameworks-libs/play-framework/java-play-gestion-fichier-config-dev-prod.html index d811c8f7..ac4ec214 100644 --- a/docs/platforms-frameworks-libs/play-framework/java-play-gestion-fichier-config-dev-prod.html +++ b/docs/platforms-frameworks-libs/play-framework/java-play-gestion-fichier-config-dev-prod.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/play-framework/java-play-pojo-validation.html b/docs/platforms-frameworks-libs/play-framework/java-play-pojo-validation.html index 0a89cf0b..ab5c0a57 100644 --- a/docs/platforms-frameworks-libs/play-framework/java-play-pojo-validation.html +++ b/docs/platforms-frameworks-libs/play-framework/java-play-pojo-validation.html @@ -7,7 +7,7 @@ - + @@ -235,6 +235,6 @@

- + diff --git a/docs/platforms-frameworks-libs/svelte/svelte-overview.html b/docs/platforms-frameworks-libs/svelte/svelte-overview.html index 442aec33..a4d56bda 100644 --- a/docs/platforms-frameworks-libs/svelte/svelte-overview.html +++ b/docs/platforms-frameworks-libs/svelte/svelte-overview.html @@ -7,7 +7,7 @@ - + @@ -30,6 +30,6 @@ →

- + diff --git a/docs/platforms-frameworks-libs/vuejs/vuejs-overview.html b/docs/platforms-frameworks-libs/vuejs/vuejs-overview.html index c405cc9b..08072c7a 100644 --- a/docs/platforms-frameworks-libs/vuejs/vuejs-overview.html +++ b/docs/platforms-frameworks-libs/vuejs/vuejs-overview.html @@ -7,7 +7,7 @@ - + @@ -45,6 +45,6 @@ →

- + diff --git a/docs/security/CORS/infos-CORS.html b/docs/security/CORS/infos-CORS.html index e4042bc2..0b2b12ec 100644 --- a/docs/security/CORS/infos-CORS.html +++ b/docs/security/CORS/infos-CORS.html @@ -7,7 +7,7 @@ - + @@ -22,6 +22,6 @@ Without that header, the JavaScript client CANNOT read them.

# Tuto

# Specs

# Play! Impl

Need to add a route for OPTIONS http method and a suited controller. route ex :

OPTIONS       /*path                 controllers.CorsCtrl.checkPreFlight(path)
 
1

# Angular perform OPTIONS action instead of POST

- + diff --git a/docs/security/CORS/infos-JSONP.html b/docs/security/CORS/infos-JSONP.html index 91596ab2..f8e6def9 100644 --- a/docs/security/CORS/infos-JSONP.html +++ b/docs/security/CORS/infos-JSONP.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

# JSONP

JSONP nice explanation on wikipedia.en

- + diff --git a/docs/security/PKI-X509.html b/docs/security/PKI-X509.html index c4da9836..f0164e15 100644 --- a/docs/security/PKI-X509.html +++ b/docs/security/PKI-X509.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@

- + diff --git a/docs/security/authentification.html b/docs/security/authentification.html index a97b7b0b..41b3796b 100644 --- a/docs/security/authentification.html +++ b/docs/security/authentification.html @@ -7,7 +7,7 @@ - + @@ -110,6 +110,6 @@ →

- + diff --git a/docs/security/blockchains.html b/docs/security/blockchains.html index 87f0da0b..01a23e8a 100644 --- a/docs/security/blockchains.html +++ b/docs/security/blockchains.html @@ -7,7 +7,7 @@ - + @@ -29,6 +29,6 @@ →

- + diff --git a/docs/security/chiffrement.html b/docs/security/chiffrement.html index c117b6ef..fd8e9a34 100644 --- a/docs/security/chiffrement.html +++ b/docs/security/chiffrement.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/security/index.html b/docs/security/index.html index 44d7da06..723f4fd2 100644 --- a/docs/security/index.html +++ b/docs/security/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

# Security

- + diff --git a/docs/security/security-basics.html b/docs/security/security-basics.html index 49e2f285..b46b7f5e 100644 --- a/docs/security/security-basics.html +++ b/docs/security/security-basics.html @@ -7,7 +7,7 @@ - + @@ -22,6 +22,6 @@ →

- + diff --git a/docs/security/security-webapp.html b/docs/security/security-webapp.html index 5afda61f..49901ded 100644 --- a/docs/security/security-webapp.html +++ b/docs/security/security-webapp.html @@ -7,7 +7,7 @@ - + @@ -36,6 +36,6 @@ →

- + diff --git a/docs/software-engineering/archi-micro-services.html b/docs/software-engineering/archi-micro-services.html index 256751a0..3e530b8e 100644 --- a/docs/software-engineering/archi-micro-services.html +++ b/docs/software-engineering/archi-micro-services.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/software-engineering/architecture.html b/docs/software-engineering/architecture.html index 8ba4c004..ec3e26e0 100644 --- a/docs/software-engineering/architecture.html +++ b/docs/software-engineering/architecture.html @@ -7,7 +7,7 @@ - + @@ -50,6 +50,6 @@ →

- + diff --git a/docs/software-engineering/brooks-no-silver-bullet-notes.html b/docs/software-engineering/brooks-no-silver-bullet-notes.html index a67a70e4..2336d3fa 100644 --- a/docs/software-engineering/brooks-no-silver-bullet-notes.html +++ b/docs/software-engineering/brooks-no-silver-bullet-notes.html @@ -7,7 +7,7 @@ - + @@ -31,6 +31,6 @@ →

- + diff --git a/docs/software-engineering/code-complexity.html b/docs/software-engineering/code-complexity.html index eb9edb10..1b6f3ba2 100644 --- a/docs/software-engineering/code-complexity.html +++ b/docs/software-engineering/code-complexity.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/software-engineering/code-reviews.html b/docs/software-engineering/code-reviews.html index c7964b93..2441d490 100644 --- a/docs/software-engineering/code-reviews.html +++ b/docs/software-engineering/code-reviews.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/software-engineering/compilateur.html b/docs/software-engineering/compilateur.html index 0358dcc7..6c7547b5 100644 --- a/docs/software-engineering/compilateur.html +++ b/docs/software-engineering/compilateur.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/software-engineering/composition-over-inheritance.html b/docs/software-engineering/composition-over-inheritance.html index 75843220..382ef313 100644 --- a/docs/software-engineering/composition-over-inheritance.html +++ b/docs/software-engineering/composition-over-inheritance.html @@ -7,7 +7,7 @@ - + @@ -88,6 +88,6 @@ →

- + diff --git a/docs/software-engineering/ddd.html b/docs/software-engineering/ddd.html index f08324fa..92bd6767 100644 --- a/docs/software-engineering/ddd.html +++ b/docs/software-engineering/ddd.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/software-engineering/dette-technique-et-TTM.html b/docs/software-engineering/dette-technique-et-TTM.html index 908a0377..3edb0166 100644 --- a/docs/software-engineering/dette-technique-et-TTM.html +++ b/docs/software-engineering/dette-technique-et-TTM.html @@ -7,7 +7,7 @@ - + @@ -65,6 +65,6 @@ →

- + diff --git a/docs/software-engineering/genie-logiciel.html b/docs/software-engineering/genie-logiciel.html index abe7045e..33cbd91b 100644 --- a/docs/software-engineering/genie-logiciel.html +++ b/docs/software-engineering/genie-logiciel.html @@ -7,7 +7,7 @@ - + @@ -38,6 +38,6 @@ →

- + diff --git a/docs/software-engineering/index.html b/docs/software-engineering/index.html index bef6ad20..5da9cb02 100644 --- a/docs/software-engineering/index.html +++ b/docs/software-engineering/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

# Software-engineering

- + diff --git a/docs/software-engineering/paradigms.html b/docs/software-engineering/paradigms.html index 8e357ce7..30f360f1 100644 --- a/docs/software-engineering/paradigms.html +++ b/docs/software-engineering/paradigms.html @@ -7,7 +7,7 @@ - + @@ -46,6 +46,6 @@ →

- + diff --git a/docs/software-engineering/reeves-what-is-software-design-notes.html b/docs/software-engineering/reeves-what-is-software-design-notes.html index f717aba0..45accdf4 100644 --- a/docs/software-engineering/reeves-what-is-software-design-notes.html +++ b/docs/software-engineering/reeves-what-is-software-design-notes.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/software-engineering/scrum-memo.html b/docs/software-engineering/scrum-memo.html index 400dbcd4..4aa7110b 100644 --- a/docs/software-engineering/scrum-memo.html +++ b/docs/software-engineering/scrum-memo.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/software-engineering/semver.html b/docs/software-engineering/semver.html index bdb993a7..3e431640 100644 --- a/docs/software-engineering/semver.html +++ b/docs/software-engineering/semver.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/software-engineering/stamps.html b/docs/software-engineering/stamps.html index be19c2f9..ac3b2b54 100644 --- a/docs/software-engineering/stamps.html +++ b/docs/software-engineering/stamps.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/software-engineering/testing.html b/docs/software-engineering/testing.html index a9152bd1..ad1ae2ae 100644 --- a/docs/software-engineering/testing.html +++ b/docs/software-engineering/testing.html @@ -7,7 +7,7 @@ - + @@ -36,6 +36,6 @@ →

- + diff --git a/docs/software-engineering/typings.html b/docs/software-engineering/typings.html index 9516935b..9c1a8d78 100644 --- a/docs/software-engineering/typings.html +++ b/docs/software-engineering/typings.html @@ -7,7 +7,7 @@ - + @@ -54,6 +54,6 @@

- + diff --git a/docs/systems/filesystem.html b/docs/systems/filesystem.html index 3fcb8575..27797046 100644 --- a/docs/systems/filesystem.html +++ b/docs/systems/filesystem.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/systems/index.html b/docs/systems/index.html index 7c799557..00b46319 100644 --- a/docs/systems/index.html +++ b/docs/systems/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

# Systems

- + diff --git a/docs/systems/linux/apt-cheatsheet.html b/docs/systems/linux/apt-cheatsheet.html index d216b2c2..634ce34a 100644 --- a/docs/systems/linux/apt-cheatsheet.html +++ b/docs/systems/linux/apt-cheatsheet.html @@ -7,7 +7,7 @@ - + @@ -36,6 +36,6 @@ →

- + diff --git a/docs/systems/linux/bash/bash-notes-whiptail.html b/docs/systems/linux/bash/bash-notes-whiptail.html index d9e05f30..c800cb55 100644 --- a/docs/systems/linux/bash/bash-notes-whiptail.html +++ b/docs/systems/linux/bash/bash-notes-whiptail.html @@ -7,7 +7,7 @@ - + @@ -99,6 +99,6 @@ →

- + diff --git a/docs/systems/linux/linux-fhs-description.html b/docs/systems/linux/linux-fhs-description.html index 6122868c..3944c154 100644 --- a/docs/systems/linux/linux-fhs-description.html +++ b/docs/systems/linux/linux-fhs-description.html @@ -7,7 +7,7 @@ - + @@ -54,6 +54,6 @@ →

- + diff --git a/docs/systems/linux/linux-fhs-droits.html b/docs/systems/linux/linux-fhs-droits.html index 0c14cbb6..0228489e 100644 --- a/docs/systems/linux/linux-fhs-droits.html +++ b/docs/systems/linux/linux-fhs-droits.html @@ -7,7 +7,7 @@ - + @@ -49,6 +49,6 @@ →

- + diff --git a/docs/systems/linux/linux-logs.html b/docs/systems/linux/linux-logs.html index f6baa300..29c9009d 100644 --- a/docs/systems/linux/linux-logs.html +++ b/docs/systems/linux/linux-logs.html @@ -7,7 +7,7 @@ - + @@ -26,6 +26,6 @@ →

- + diff --git a/docs/systems/linux/linux-manipulation-fichiers.html b/docs/systems/linux/linux-manipulation-fichiers.html index d90c4f49..a94a769d 100644 --- a/docs/systems/linux/linux-manipulation-fichiers.html +++ b/docs/systems/linux/linux-manipulation-fichiers.html @@ -7,7 +7,7 @@ - + @@ -94,6 +94,6 @@ →

- + diff --git a/docs/systems/linux/linux-manipulation-process.html b/docs/systems/linux/linux-manipulation-process.html index 465747c6..ecc5e4ed 100644 --- a/docs/systems/linux/linux-manipulation-process.html +++ b/docs/systems/linux/linux-manipulation-process.html @@ -7,7 +7,7 @@ - + @@ -29,6 +29,6 @@ →

- + diff --git a/docs/systems/linux/ubuntu-cheatsheet.html b/docs/systems/linux/ubuntu-cheatsheet.html index a921162e..c7c48969 100644 --- a/docs/systems/linux/ubuntu-cheatsheet.html +++ b/docs/systems/linux/ubuntu-cheatsheet.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/systems/linux/ubuntu-create-usb-boot.html b/docs/systems/linux/ubuntu-create-usb-boot.html index 579227a2..1634ea57 100644 --- a/docs/systems/linux/ubuntu-create-usb-boot.html +++ b/docs/systems/linux/ubuntu-create-usb-boot.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/systems/linux/ubuntu-nvidia.html b/docs/systems/linux/ubuntu-nvidia.html index cc489b52..43e6c4c8 100644 --- a/docs/systems/linux/ubuntu-nvidia.html +++ b/docs/systems/linux/ubuntu-nvidia.html @@ -7,7 +7,7 @@ - + @@ -39,6 +39,6 @@ →

- + diff --git a/docs/systems/linux/ubuntu-pdf.html b/docs/systems/linux/ubuntu-pdf.html index 2120cef1..794125bf 100644 --- a/docs/systems/linux/ubuntu-pdf.html +++ b/docs/systems/linux/ubuntu-pdf.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/systems/process-signals.html b/docs/systems/process-signals.html index 769cbbc7..aaf595dc 100644 --- a/docs/systems/process-signals.html +++ b/docs/systems/process-signals.html @@ -7,7 +7,7 @@ - + @@ -29,6 +29,6 @@ →

- + diff --git a/docs/systems/windows/windows-checksum.html b/docs/systems/windows/windows-checksum.html index e5aa3cd9..f43f592a 100644 --- a/docs/systems/windows/windows-checksum.html +++ b/docs/systems/windows/windows-checksum.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/systems/windows/windows-ubuntu-on-windows10.html b/docs/systems/windows/windows-ubuntu-on-windows10.html index 7aed6bbd..ecb1371b 100644 --- a/docs/systems/windows/windows-ubuntu-on-windows10.html +++ b/docs/systems/windows/windows-ubuntu-on-windows10.html @@ -7,7 +7,7 @@ - + @@ -23,6 +23,6 @@

- + diff --git a/docs/tools/cheat-sheets.html b/docs/tools/cheat-sheets.html index 2246585e..fdd839fc 100644 --- a/docs/tools/cheat-sheets.html +++ b/docs/tools/cheat-sheets.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/diagrams.html b/docs/tools/diagrams.html index de3e09e1..ab642d80 100644 --- a/docs/tools/diagrams.html +++ b/docs/tools/diagrams.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/elasticsearch-overview.html b/docs/tools/elasticsearch-overview.html index 3a677b9f..2b273240 100644 --- a/docs/tools/elasticsearch-overview.html +++ b/docs/tools/elasticsearch-overview.html @@ -7,7 +7,7 @@ - + @@ -111,6 +111,6 @@ →

- + diff --git a/docs/tools/envinfo.html b/docs/tools/envinfo.html index d1f15de6..c314bc1e 100644 --- a/docs/tools/envinfo.html +++ b/docs/tools/envinfo.html @@ -7,7 +7,7 @@ - + @@ -105,6 +105,6 @@ →

- + diff --git a/docs/tools/fiddler.html b/docs/tools/fiddler.html index 38b4d604..40fc7429 100644 --- a/docs/tools/fiddler.html +++ b/docs/tools/fiddler.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/file-diff-online-tools.html b/docs/tools/file-diff-online-tools.html index acfb3163..1adb7a5f 100644 --- a/docs/tools/file-diff-online-tools.html +++ b/docs/tools/file-diff-online-tools.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/git/git-articles-divers.html b/docs/tools/git/git-articles-divers.html index 68a24b3d..84eef13e 100644 --- a/docs/tools/git/git-articles-divers.html +++ b/docs/tools/git/git-articles-divers.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/tools/git/git-cheatsheet.html b/docs/tools/git/git-cheatsheet.html index 0fbf9250..b30204b6 100644 --- a/docs/tools/git/git-cheatsheet.html +++ b/docs/tools/git/git-cheatsheet.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/git/git-config.html b/docs/tools/git/git-config.html index 5a8bcbf5..1a7e1c1d 100644 --- a/docs/tools/git/git-config.html +++ b/docs/tools/git/git-config.html @@ -7,7 +7,7 @@ - + @@ -88,6 +88,6 @@ →

- + diff --git a/docs/tools/git/git-cours.html b/docs/tools/git/git-cours.html index deb42920..f050c2f6 100644 --- a/docs/tools/git/git-cours.html +++ b/docs/tools/git/git-cours.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/git/git-definitions.html b/docs/tools/git/git-definitions.html index 5bb60524..763c1e4d 100644 --- a/docs/tools/git/git-definitions.html +++ b/docs/tools/git/git-definitions.html @@ -7,7 +7,7 @@ - + @@ -83,6 +83,6 @@ →

- + diff --git a/docs/tools/git/git-gitignore-example.html b/docs/tools/git/git-gitignore-example.html index 63bbf1e7..cb97d2d9 100644 --- a/docs/tools/git/git-gitignore-example.html +++ b/docs/tools/git/git-gitignore-example.html @@ -7,7 +7,7 @@ - + @@ -121,6 +121,6 @@ →

- + diff --git a/docs/tools/git/git-internals.html b/docs/tools/git/git-internals.html index 08a0dc28..f2e4f890 100644 --- a/docs/tools/git/git-internals.html +++ b/docs/tools/git/git-internals.html @@ -7,7 +7,7 @@ - + @@ -63,6 +63,6 @@ →

- + diff --git a/docs/tools/git/git-rebase.html b/docs/tools/git/git-rebase.html index 782aa77b..87e968f6 100644 --- a/docs/tools/git/git-rebase.html +++ b/docs/tools/git/git-rebase.html @@ -7,7 +7,7 @@ - + @@ -106,6 +106,6 @@ →

- + diff --git a/docs/tools/git/git-reflog.html b/docs/tools/git/git-reflog.html index 11df4584..07029739 100644 --- a/docs/tools/git/git-reflog.html +++ b/docs/tools/git/git-reflog.html @@ -7,7 +7,7 @@ - + @@ -29,6 +29,6 @@ →

- + diff --git a/docs/tools/git/git-remotes.html b/docs/tools/git/git-remotes.html index f197bf72..44357fdb 100644 --- a/docs/tools/git/git-remotes.html +++ b/docs/tools/git/git-remotes.html @@ -7,7 +7,7 @@ - + @@ -111,6 +111,6 @@ →

- + diff --git a/docs/tools/git/git-tags-management.html b/docs/tools/git/git-tags-management.html index f2e8953c..df1bda01 100644 --- a/docs/tools/git/git-tags-management.html +++ b/docs/tools/git/git-tags-management.html @@ -7,7 +7,7 @@ - + @@ -44,6 +44,6 @@ →

- + diff --git a/docs/tools/git/git-tools.html b/docs/tools/git/git-tools.html index 9d3b7fa8..db97f96c 100644 --- a/docs/tools/git/git-tools.html +++ b/docs/tools/git/git-tools.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/git/git-tracking-branches.html b/docs/tools/git/git-tracking-branches.html index 90fee898..d3153717 100644 --- a/docs/tools/git/git-tracking-branches.html +++ b/docs/tools/git/git-tracking-branches.html @@ -7,7 +7,7 @@ - + @@ -61,6 +61,6 @@ →

- + diff --git a/docs/tools/git/git-useful-commands.html b/docs/tools/git/git-useful-commands.html index f85e9283..886b2d7d 100644 --- a/docs/tools/git/git-useful-commands.html +++ b/docs/tools/git/git-useful-commands.html @@ -7,7 +7,7 @@ - + @@ -230,6 +230,6 @@ →

- + diff --git a/docs/tools/git/git-workflow.html b/docs/tools/git/git-workflow.html index 8bfa7c06..15105f40 100644 --- a/docs/tools/git/git-workflow.html +++ b/docs/tools/git/git-workflow.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/tools/gitbook/gitbook-intro.html b/docs/tools/gitbook/gitbook-intro.html index ae524e5b..fe34af13 100644 --- a/docs/tools/gitbook/gitbook-intro.html +++ b/docs/tools/gitbook/gitbook-intro.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/index.html b/docs/tools/index.html index 5fd722ba..a953441d 100644 --- a/docs/tools/index.html +++ b/docs/tools/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

# Tools

- + diff --git a/docs/tools/jetbrains/jetbrains-overview.html b/docs/tools/jetbrains/jetbrains-overview.html index 2c6fdc9b..c852edb4 100644 --- a/docs/tools/jetbrains/jetbrains-overview.html +++ b/docs/tools/jetbrains/jetbrains-overview.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/json-web-token-tools.html b/docs/tools/json-web-token-tools.html index 528521a9..efb79b62 100644 --- a/docs/tools/json-web-token-tools.html +++ b/docs/tools/json-web-token-tools.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/nano-memo.html b/docs/tools/nano-memo.html index 619e48de..daaeccaf 100644 --- a/docs/tools/nano-memo.html +++ b/docs/tools/nano-memo.html @@ -7,7 +7,7 @@ - + @@ -99,6 +99,6 @@ →

- + diff --git a/docs/tools/npm/npm-memo.html b/docs/tools/npm/npm-memo.html index ad8cc438..b9b5f096 100644 --- a/docs/tools/npm/npm-memo.html +++ b/docs/tools/npm/npm-memo.html @@ -7,7 +7,7 @@ - + @@ -81,6 +81,6 @@ →

- + diff --git a/docs/tools/npm/npm-on-windows.html b/docs/tools/npm/npm-on-windows.html index a94c7383..0d0b1689 100644 --- a/docs/tools/npm/npm-on-windows.html +++ b/docs/tools/npm/npm-on-windows.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/npm/npm-packages.html b/docs/tools/npm/npm-packages.html index 854d32e0..a209bf6d 100644 --- a/docs/tools/npm/npm-packages.html +++ b/docs/tools/npm/npm-packages.html @@ -7,7 +7,7 @@ - + @@ -75,6 +75,6 @@ →

- + diff --git a/docs/tools/npm/npm-registry.html b/docs/tools/npm/npm-registry.html index d2502eb5..98d101ca 100644 --- a/docs/tools/npm/npm-registry.html +++ b/docs/tools/npm/npm-registry.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/npm/npm-security.html b/docs/tools/npm/npm-security.html index e192bfe4..7dd2b562 100644 --- a/docs/tools/npm/npm-security.html +++ b/docs/tools/npm/npm-security.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/npm/npm-shrinkwrap.html b/docs/tools/npm/npm-shrinkwrap.html index 8aa57ef8..73dfb1d7 100644 --- a/docs/tools/npm/npm-shrinkwrap.html +++ b/docs/tools/npm/npm-shrinkwrap.html @@ -7,7 +7,7 @@ - + @@ -32,6 +32,6 @@ →

- + diff --git a/docs/tools/regex-online-tools.html b/docs/tools/regex-online-tools.html index 9943ef1d..d1f44163 100644 --- a/docs/tools/regex-online-tools.html +++ b/docs/tools/regex-online-tools.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/security-tools-online.html b/docs/tools/security-tools-online.html index d6aab485..ab5abc3c 100644 --- a/docs/tools/security-tools-online.html +++ b/docs/tools/security-tools-online.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/slides/fusuma/fusuma.html b/docs/tools/slides/fusuma/fusuma.html index 578554c2..60c5f56b 100644 --- a/docs/tools/slides/fusuma/fusuma.html +++ b/docs/tools/slides/fusuma/fusuma.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/slides/gitpitch/gitpitch-intro.html b/docs/tools/slides/gitpitch/gitpitch-intro.html index fddcf06d..ccddf22e 100644 --- a/docs/tools/slides/gitpitch/gitpitch-intro.html +++ b/docs/tools/slides/gitpitch/gitpitch-intro.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/slides/slides.html b/docs/tools/slides/slides.html index d5c9487f..44ccf7ce 100644 --- a/docs/tools/slides/slides.html +++ b/docs/tools/slides/slides.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/slides/webslides/webslides.html b/docs/tools/slides/webslides/webslides.html index 6478c9d7..bb3606ed 100644 --- a/docs/tools/slides/webslides/webslides.html +++ b/docs/tools/slides/webslides/webslides.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/social/social-mastodon.html b/docs/tools/social/social-mastodon.html index 93dccef2..f4202305 100644 --- a/docs/tools/social/social-mastodon.html +++ b/docs/tools/social/social-mastodon.html @@ -7,7 +7,7 @@ - + @@ -23,6 +23,6 @@

- + diff --git a/docs/tools/testing/cypress.html b/docs/tools/testing/cypress.html index 205d187a..fbb18020 100644 --- a/docs/tools/testing/cypress.html +++ b/docs/tools/testing/cypress.html @@ -7,7 +7,7 @@ - + @@ -35,6 +35,6 @@ →

- + diff --git a/docs/tools/testing/debug-js-in-webstorm.html b/docs/tools/testing/debug-js-in-webstorm.html index 9ef879ed..62ec46f0 100644 --- a/docs/tools/testing/debug-js-in-webstorm.html +++ b/docs/tools/testing/debug-js-in-webstorm.html @@ -7,7 +7,7 @@ - + @@ -29,6 +29,6 @@ →

- + diff --git a/docs/tools/testing/jasmine.html b/docs/tools/testing/jasmine.html index 1d3daba6..d92d0771 100644 --- a/docs/tools/testing/jasmine.html +++ b/docs/tools/testing/jasmine.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/testing/jest.html b/docs/tools/testing/jest.html index 3ac32ec8..c68f1e45 100644 --- a/docs/tools/testing/jest.html +++ b/docs/tools/testing/jest.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/testing/karma.html b/docs/tools/testing/karma.html index c5331b20..208718f9 100644 --- a/docs/tools/testing/karma.html +++ b/docs/tools/testing/karma.html @@ -7,7 +7,7 @@ - + @@ -30,6 +30,6 @@ →

- + diff --git a/docs/tools/testing/qunit.html b/docs/tools/testing/qunit.html index c3f47396..676256fb 100644 --- a/docs/tools/testing/qunit.html +++ b/docs/tools/testing/qunit.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/testing/testing-tools-for-javascript.html b/docs/tools/testing/testing-tools-for-javascript.html index c8823e57..c0bafc8b 100644 --- a/docs/tools/testing/testing-tools-for-javascript.html +++ b/docs/tools/testing/testing-tools-for-javascript.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/testing/tuto-cypress.html b/docs/tools/testing/tuto-cypress.html index 771276cb..423fd40a 100644 --- a/docs/tools/testing/tuto-cypress.html +++ b/docs/tools/testing/tuto-cypress.html @@ -7,7 +7,7 @@ - + @@ -26,6 +26,6 @@ →

- + diff --git a/docs/tools/tools-auto-deps-update.html b/docs/tools/tools-auto-deps-update.html index ebe7e38a..73532b6b 100644 --- a/docs/tools/tools-auto-deps-update.html +++ b/docs/tools/tools-auto-deps-update.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/tools/tools-bower.html b/docs/tools/tools-bower.html index 627b4cc7..fb196027 100644 --- a/docs/tools/tools-bower.html +++ b/docs/tools/tools-bower.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/tools/tools-bundlers.html b/docs/tools/tools-bundlers.html index 428b7de4..7bd86e3f 100644 --- a/docs/tools/tools-bundlers.html +++ b/docs/tools/tools-bundlers.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/tools-grunt.html b/docs/tools/tools-grunt.html index 6c382f2e..edcf1e82 100644 --- a/docs/tools/tools-grunt.html +++ b/docs/tools/tools-grunt.html @@ -7,7 +7,7 @@ - + @@ -40,6 +40,6 @@ →

- + diff --git a/docs/tools/tools-gulp.html b/docs/tools/tools-gulp.html index c05ba8b3..20517aee 100644 --- a/docs/tools/tools-gulp.html +++ b/docs/tools/tools-gulp.html @@ -7,7 +7,7 @@ - + @@ -29,6 +29,6 @@ →

- + diff --git a/docs/tools/tools-js-linters.html b/docs/tools/tools-js-linters.html index 3678bcfb..ce5b66c0 100644 --- a/docs/tools/tools-js-linters.html +++ b/docs/tools/tools-js-linters.html @@ -7,7 +7,7 @@ - + @@ -26,6 +26,6 @@ →

- + diff --git a/docs/tools/tools-markdown-editor.html b/docs/tools/tools-markdown-editor.html index 3924dee7..40a453c8 100644 --- a/docs/tools/tools-markdown-editor.html +++ b/docs/tools/tools-markdown-editor.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/tools-release-workflow.html b/docs/tools/tools-release-workflow.html index 1ee890b0..28a72720 100644 --- a/docs/tools/tools-release-workflow.html +++ b/docs/tools/tools-release-workflow.html @@ -7,7 +7,7 @@ - + @@ -112,6 +112,6 @@ →

- + diff --git a/docs/tools/tools-semantic-release.html b/docs/tools/tools-semantic-release.html index ca67fd5e..02c39cd5 100644 --- a/docs/tools/tools-semantic-release.html +++ b/docs/tools/tools-semantic-release.html @@ -7,7 +7,7 @@ - + @@ -54,6 +54,6 @@ →

- + diff --git a/docs/tools/tools-yeoman.html b/docs/tools/tools-yeoman.html index 3a82011d..ea7dcb04 100644 --- a/docs/tools/tools-yeoman.html +++ b/docs/tools/tools-yeoman.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/tools/ux-tools-and-links.html b/docs/tools/ux-tools-and-links.html index 9454c262..ff5dc17b 100644 --- a/docs/tools/ux-tools-and-links.html +++ b/docs/tools/ux-tools-and-links.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/vim-memo.html b/docs/tools/vim-memo.html index ceef5f40..e9d7d72d 100644 --- a/docs/tools/vim-memo.html +++ b/docs/tools/vim-memo.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/tools/visual-studio-code.html b/docs/tools/visual-studio-code.html index 4a63a357..c5e04e45 100644 --- a/docs/tools/visual-studio-code.html +++ b/docs/tools/visual-studio-code.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/REST/open-api-initiative.html b/docs/web/REST/open-api-initiative.html index 29410a6c..7d88073c 100644 --- a/docs/web/REST/open-api-initiative.html +++ b/docs/web/REST/open-api-initiative.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/REST/rest-api-return-http-code.html b/docs/web/REST/rest-api-return-http-code.html index 627b96b4..f609b1a5 100644 --- a/docs/web/REST/rest-api-return-http-code.html +++ b/docs/web/REST/rest-api-return-http-code.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/REST/rest-best-practices.html b/docs/web/REST/rest-best-practices.html index f5652015..7c78c41f 100644 --- a/docs/web/REST/rest-best-practices.html +++ b/docs/web/REST/rest-best-practices.html @@ -7,7 +7,7 @@ - + @@ -31,6 +31,6 @@ →

- + diff --git a/docs/web/REST/rest-design-tool-RAML.html b/docs/web/REST/rest-design-tool-RAML.html index cbc6cf22..29185698 100644 --- a/docs/web/REST/rest-design-tool-RAML.html +++ b/docs/web/REST/rest-design-tool-RAML.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/REST/rest-design-tool-swagger-io.html b/docs/web/REST/rest-design-tool-swagger-io.html index 31dfb04f..c231cd01 100644 --- a/docs/web/REST/rest-design-tool-swagger-io.html +++ b/docs/web/REST/rest-design-tool-swagger-io.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/REST/rest-naming-convention-links.html b/docs/web/REST/rest-naming-convention-links.html index 6a5bc32c..87ac27f2 100644 --- a/docs/web/REST/rest-naming-convention-links.html +++ b/docs/web/REST/rest-naming-convention-links.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/RFC/RFC-http.html b/docs/web/RFC/RFC-http.html index 1db3d683..77fdd35c 100644 --- a/docs/web/RFC/RFC-http.html +++ b/docs/web/RFC/RFC-http.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@

- + diff --git a/docs/web/RFC/RFC-overview.html b/docs/web/RFC/RFC-overview.html index 2c1a441f..53a4304b 100644 --- a/docs/web/RFC/RFC-overview.html +++ b/docs/web/RFC/RFC-overview.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/SEO.html b/docs/web/SEO.html index e5460226..40d45a2e 100644 --- a/docs/web/SEO.html +++ b/docs/web/SEO.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/browsers/browsers-how-they-init-web-page.html b/docs/web/browsers/browsers-how-they-init-web-page.html index f3aec2df..2d0e4e79 100644 --- a/docs/web/browsers/browsers-how-they-init-web-page.html +++ b/docs/web/browsers/browsers-how-they-init-web-page.html @@ -7,7 +7,7 @@ - + @@ -44,6 +44,6 @@ →

- + diff --git a/docs/web/browsers/browsers-overview.html b/docs/web/browsers/browsers-overview.html index 82207815..32d095d7 100644 --- a/docs/web/browsers/browsers-overview.html +++ b/docs/web/browsers/browsers-overview.html @@ -7,7 +7,7 @@ - + @@ -114,6 +114,6 @@ →

- + diff --git a/docs/web/browsers/browsers-perfs.html b/docs/web/browsers/browsers-perfs.html index a5c4fa6b..8e4520a9 100644 --- a/docs/web/browsers/browsers-perfs.html +++ b/docs/web/browsers/browsers-perfs.html @@ -7,7 +7,7 @@ - + @@ -25,6 +25,6 @@ →

- + diff --git a/docs/web/cookies/cookies.html b/docs/web/cookies/cookies.html index 7a4708dc..799267f1 100644 --- a/docs/web/cookies/cookies.html +++ b/docs/web/cookies/cookies.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/debug-chrome-android.html b/docs/web/debug-chrome-android.html index be31aa37..af60667d 100644 --- a/docs/web/debug-chrome-android.html +++ b/docs/web/debug-chrome-android.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

- + diff --git a/docs/web/gestion-monetisation-web.html b/docs/web/gestion-monetisation-web.html index a825712d..df9b5e27 100644 --- a/docs/web/gestion-monetisation-web.html +++ b/docs/web/gestion-monetisation-web.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/http-cache.html b/docs/web/http-cache.html index 0e67a741..32d08d00 100644 --- a/docs/web/http-cache.html +++ b/docs/web/http-cache.html @@ -7,7 +7,7 @@ - + @@ -42,6 +42,6 @@ →

- + diff --git a/docs/web/index.html b/docs/web/index.html index 2a65e7a9..9413d317 100644 --- a/docs/web/index.html +++ b/docs/web/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

# Web

- + diff --git a/docs/web/polyfills-shivs-shims.html b/docs/web/polyfills-shivs-shims.html index 93479413..68185a05 100644 --- a/docs/web/polyfills-shivs-shims.html +++ b/docs/web/polyfills-shivs-shims.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/regex.html b/docs/web/regex.html index a46c8293..4de33870 100644 --- a/docs/web/regex.html +++ b/docs/web/regex.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/shadow-dom.html b/docs/web/shadow-dom.html index 8f3b0b99..af948d57 100644 --- a/docs/web/shadow-dom.html +++ b/docs/web/shadow-dom.html @@ -7,7 +7,7 @@ - + @@ -26,6 +26,6 @@ →

- + diff --git a/docs/web/web-comparatifs-frameworks.html b/docs/web/web-comparatifs-frameworks.html index b8f40533..b486768f 100644 --- a/docs/web/web-comparatifs-frameworks.html +++ b/docs/web/web-comparatifs-frameworks.html @@ -7,7 +7,7 @@ - + @@ -28,6 +28,6 @@ →

- + diff --git a/docs/web/web-components.html b/docs/web/web-components.html index 311e45cc..e25a4084 100644 --- a/docs/web/web-components.html +++ b/docs/web/web-components.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/web-generic-good-practices.html b/docs/web/web-generic-good-practices.html index 6225768f..167292c6 100644 --- a/docs/web/web-generic-good-practices.html +++ b/docs/web/web-generic-good-practices.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/web-login-forms-good-practices.html b/docs/web/web-login-forms-good-practices.html index df21dd98..0dbb3aa7 100644 --- a/docs/web/web-login-forms-good-practices.html +++ b/docs/web/web-login-forms-good-practices.html @@ -7,7 +7,7 @@ - + @@ -120,6 +120,6 @@ →

- + diff --git a/docs/web/web-scraping.html b/docs/web/web-scraping.html index 8ca4332e..b4e520cd 100644 --- a/docs/web/web-scraping.html +++ b/docs/web/web-scraping.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/web-semantic-web.html b/docs/web/web-semantic-web.html index da7b61b3..c694c385 100644 --- a/docs/web/web-semantic-web.html +++ b/docs/web/web-semantic-web.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/web-test-selenium.html b/docs/web/web-test-selenium.html index 8d5f6b7a..7a17ef88 100644 --- a/docs/web/web-test-selenium.html +++ b/docs/web/web-test-selenium.html @@ -7,7 +7,7 @@ - + @@ -24,6 +24,6 @@ →

- + diff --git a/docs/web/web-tracking.html b/docs/web/web-tracking.html index f8b95565..ccdb1e98 100644 --- a/docs/web/web-tracking.html +++ b/docs/web/web-tracking.html @@ -7,7 +7,7 @@ - + @@ -28,6 +28,6 @@ →

- + diff --git a/docs/web/webassembly.html b/docs/web/webassembly.html index 9f46390e..11f922c5 100644 --- a/docs/web/webassembly.html +++ b/docs/web/webassembly.html @@ -7,7 +7,7 @@ - + @@ -27,6 +27,6 @@ →

- +