lillesand/js-onerror — pull request #10 by kjbekkelund (2013-05-11 22:24:30+00:00)
Title: Forslag til tester

Jeg har lekt litt med hvordan vi kan lage gode tester for `onerror`-funksjonaliteten, og har kodet opp et forslag. Dette er fortsatt relativt grovt, og bør nok justeres litt før det fungerer godt.

Disse testene benytter [Browsermob Proxy](http://bmp.lightbody.net/) for å sette opp en proxy. Jeg bruker så [Selenium Webdriver](http://docs.seleniumhq.org/projects/webdriver/) for å aksessere enkle testsider gjennom proxyen. Browsermob Proxy returnerer så all trafikk som har gått gjennom proxyen i HAR (HTTP Archive)-format. Da kan jeg sjekke at forventet trafikk har gått gjennom, for eksempel at `/log?{diverse params}` har blitt lastet (og evt inneholder forventet data). Et eksempel på dette finnes i [test/functional/test.js](https://github.com/kjbekkelund/js-onerror/blob/978b5fe01cb43c5d8c46808e90674c67e04043ee/test/functional/test.js) (som vel er essensen av denne pull requesten).

Letteste måten å sjekke ut forslaget er kanskje:

```sh
$ git clone git://github.com/kjbekkelund/js-onerror.git kimjoar-onerror
$ cd kimjoar-onerror
$ git checkout tests
```

For å kjøre testene må først Browsermob Proxy og Selenium kjøres opp. Det kan gjøres ved å kjøre `node make proxy` og `node make selenium` fra rot i repoet — men etter noen minutter begynte viftene mine å kjøre på helikopterfart, så mulig det er best å kalle kommandoene direkte (sjekk `make.js`). Etter at proxyen og selenium kjører, kan testene kjøres med `npm test`. Dersom det feiler kan det være greit å gå i `test/functional/test.js` og bytte `chrome` med `firefox` (Chrome ville ikke alltid samarbeide med meg).

For nå har jeg valgt å commite de to test-avhengighetene. Usikker på hvordan de bør håndteres, for eksempel om de bør være en del av repoet.

Jeg liker heller ikke at man må starte to ting for seg selv før man får kjørt testene, men var usikker på hvordan jeg skulle kjøre de i bakgrunnen. For eksempel: hvordan er jeg sikker på at jeg får ryddet opp dersom testene feiler hardt? Kjipt om det plutselig begynner å leve masse zombie-prosesser.

---

Det er rimelig heftig oppsett for å få testene i gang her, men samtidig: jeg har ikke kommet på enklere måter å teste dette, spesielt når vi skal begynne å sjekke overskriving av `onerror` osvosv. Dette er naturligvis globalt i nettleseren, og er dermed vanskelig å teste med små enkle enhetstester (såvidt jeg kan se — veldig åpen for forslag).

Vad tycks?