Commit 90f33738 90f33738f968769d6abc4c1f37779d1c2db91086 by Nicolas Perriault

removed obsolete isolation tricks from test suite

1 parent 9dd655b4
1 .DS_Store 1 .DS_Store
2 *.xml 2 *.xml
3 *.png 3 *.png
4 /tmp
......
1 (function(t) { 1 var fs = require('fs'), testFile = '/tmp/__casper_test_capture.png';
2 var fs = require('fs'), testFile = '/tmp/__casper_test_capture.png';
3 2
4 if (fs.exists(testFile) && fs.isFile(testFile)) { 3 if (fs.exists(testFile) && fs.isFile(testFile)) {
5 fs.remove(testFile); 4 fs.remove(testFile);
6 } 5 }
7 6
8 casper.start('tests/site/index.html', function(self) { 7 casper.start('tests/site/index.html', function(self) {
9 self.viewport(300, 200); 8 self.viewport(300, 200);
10 t.comment('Casper.capture()'); 9 this.test.comment('Casper.capture()');
11 self.capture(testFile); 10 self.capture(testFile);
12 t.assert(fs.isFile(testFile), 'Casper.capture() captured a screenshot'); 11 this.test.assert(fs.isFile(testFile), 'Casper.capture() captured a screenshot');
13 }); 12 });
14 13
15 try { 14 try {
16 fs.remove(testFile); 15 fs.remove(testFile);
17 } catch(e) {} 16 } catch(e) {}
18 17
19 casper.run(function(self) { 18 casper.run(function(self) {
20 t.done(); 19 this.test.done();
21 }); 20 });
22 })(casper.test);
......
1 (function(t) { 1 casper.start('tests/site/index.html', function() {
2 casper.start('tests/site/index.html', function() { 2 this.click('a[href="test.html"]');
3 this.click('a[href="test.html"]'); 3 });
4 });
5 4
6 casper.then(function() { 5 casper.then(function() {
7 t.comment('Casper.click()'); 6 this.test.comment('Casper.click()');
8 t.assertTitle('CasperJS test target', 'Casper.click() can click on a link'); 7 this.test.assertTitle('CasperJS test target', 'Casper.click() can click on a link');
9 }).thenClick('a', function() { 8 }).thenClick('a', function() {
10 t.comment('Casper.thenClick()'); 9 this.test.comment('Casper.thenClick()');
11 t.assertTitle('CasperJS test form', 'Casper.thenClick() can click on a link'); 10 this.test.assertTitle('CasperJS test form', 'Casper.thenClick() can click on a link');
12 }); 11 });
13 12
14 // onclick variants tests 13 // onclick variants tests
15 casper.thenOpen('tests/site/click.html', function() { 14 casper.thenOpen('tests/site/click.html', function() {
16 t.comment('CasperUtils.click()'); 15 this.test.comment('CasperUtils.click()');
17 this.test.assert(this.click('#test1'), 'CasperUtils.click() can click an `href="javascript:` link'); 16 this.test.assert(this.click('#test1'), 'CasperUtils.click() can click an `href="javascript:` link');
18 this.test.assert(this.click('#test2'), 'CasperUtils.click() can click an `href="#"` link'); 17 this.test.assert(this.click('#test2'), 'CasperUtils.click() can click an `href="#"` link');
19 this.test.assert(this.click('#test3'), 'CasperUtils.click() can click an `onclick=".*; return false"` link'); 18 this.test.assert(this.click('#test3'), 'CasperUtils.click() can click an `onclick=".*; return false"` link');
20 this.test.assert(this.click('#test4'), 'CasperUtils.click() can click an unobstrusive js handled link'); 19 this.test.assert(this.click('#test4'), 'CasperUtils.click() can click an unobstrusive js handled link');
21 var results = this.getGlobal('results'); 20 var results = this.getGlobal('results');
22 this.test.assert(results.test1, 'CasperUtils.click() has clicked an `href="javascript:` link'); 21 this.test.assert(results.test1, 'CasperUtils.click() has clicked an `href="javascript:` link');
23 this.test.assert(results.test2, 'CasperUtils.click() has clicked an `href="#"` link'); 22 this.test.assert(results.test2, 'CasperUtils.click() has clicked an `href="#"` link');
24 this.test.assert(results.test3, 'CasperUtils.click() has clicked an `onclick=".*; return false"` link'); 23 this.test.assert(results.test3, 'CasperUtils.click() has clicked an `onclick=".*; return false"` link');
25 this.test.assert(results.test4, 'CasperUtils.click() has clicked an unobstrusive js handled link'); 24 this.test.assert(results.test4, 'CasperUtils.click() has clicked an unobstrusive js handled link');
26 }); 25 });
27 26
28 // casper.mouse 27 // casper.mouse
29 casper.then(function() { 28 casper.then(function() {
30 t.comment('Mouse.down()'); 29 this.test.comment('Mouse.down()');
31 this.mouse.down(200, 100); 30 this.mouse.down(200, 100);
32 var results = this.getGlobal('results'); 31 var results = this.getGlobal('results');
33 this.test.assertEquals(results.testdown, [200, 100], 'Mouse.down() has pressed button to the specified position'); 32 this.test.assertEquals(results.testdown, [200, 100], 'Mouse.down() has pressed button to the specified position');
34 33
35 t.comment('Mouse.up()'); 34 this.test.comment('Mouse.up()');
36 this.mouse.up(200, 100); 35 this.mouse.up(200, 100);
37 results = this.getGlobal('results'); 36 results = this.getGlobal('results');
38 this.test.assertEquals(results.testup, [200, 100], 'Mouse.up() has released button to the specified position'); 37 this.test.assertEquals(results.testup, [200, 100], 'Mouse.up() has released button to the specified position');
39 38
40 t.comment('Mouse.move()'); 39 this.test.comment('Mouse.move()');
41 this.mouse.move(200, 100); 40 this.mouse.move(200, 100);
42 results = this.getGlobal('results'); 41 results = this.getGlobal('results');
43 this.test.assertEquals(results.testmove, [200, 100], 'Mouse.move() has moved to the specified position'); 42 this.test.assertEquals(results.testmove, [200, 100], 'Mouse.move() has moved to the specified position');
44 }); 43 });
45 44
46 casper.run(function() {
47 t.done();
48 });
49 })(casper.test);
...\ No newline at end of file ...\ No newline at end of file
45 casper.run(function() {
46 this.test.done();
47 });
......
1 (function(t) { 1 var fs = require('fs');
2 t.comment('ClientUtils.encode()'); 2 var clientutils = require('clientutils').create();
3 var testCases = {
4 'an empty string': '',
5 'a word': 'plop',
6 'a null char': 'a\u0000',
7 'an utf8 string': 'ÀÁÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
8 'song lyrics': ("Voilà l'été, j'aperçois le soleil\n" +
9 "Les nuages filent et le ciel s'éclaircit\n" +
10 "Et dans ma tête qui bourdonnent?\n" +
11 "Les abeilles!"),
12 'a file contents': fs.read(phantom.casperPath + '/tests/site/alert.html')
13 };
3 14
4 var fs = require('fs'); 15 casper.test.comment('ClientUtils.encode()');
5 var clientutils = require('clientutils').create();
6 var testCases = {
7 'an empty string': '',
8 'a word': 'plop',
9 'a null char': 'a\u0000',
10 'an utf8 string': 'ÀÁÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
11 'song lyrics': ("Voilà l'été, j'aperçois le soleil\n" +
12 "Les nuages filent et le ciel s'éclaircit\n" +
13 "Et dans ma tête qui bourdonnent?\n" +
14 "Les abeilles!"),
15 'a file contents': fs.read(phantom.casperPath + '/tests/site/alert.html')
16 };
17 16
18 for (var what in testCases) { 17 for (var what in testCases) {
19 var source = testCases[what]; 18 var source = testCases[what];
20 var encoded = clientutils.encode(source); 19 var encoded = clientutils.encode(source);
21 t.assertEquals(clientutils.decode(encoded), source, 'ClientUtils can encode and decode ' + what); 20 casper.test.assertEquals(clientutils.decode(encoded), source, 'ClientUtils can encode and decode ' + what);
22 } 21 }
23 22
24 t.done(); 23 casper.test.done();
25 })(casper.test);
......
1 (function(t) { 1 var fs = require('fs');
2 casper.start('tests/site/index.html', function(self) {
3 var imageUrl = 'file://' + phantom.casperPath + '/tests/site/images/phantom.png';
4 var image = self.base64encode(imageUrl);
5 var fs = require('fs');
6 2
7 t.comment('Casper.base64encode()'); 3 casper.start('tests/site/index.html', function() {
8 t.assertEquals(image.length, 6160, 'Casper.base64encode() can retrieve base64 contents'); 4 var imageUrl = 'file://' + phantom.casperPath + '/tests/site/images/phantom.png';
5 var image = this.base64encode(imageUrl);
9 6
10 t.comment('Casper.download()'); 7 this.test.comment('Casper.base64encode()');
11 self.download(imageUrl, 'logo.png'); 8 this.test.assertEquals(image.length, 6160, 'Casper.base64encode() can retrieve base64 contents');
12 t.assert(fs.exists('logo.png'), 'Casper.download() downloads a file');
13 if (fs.exists('logo.png')) {
14 fs.remove('logo.png');
15 }
16 });
17 9
18 casper.run(function(self) { 10 this.test.comment('Casper.download()');
19 t.done(); 11 this.download(imageUrl, 'logo.png');
20 }); 12 this.test.assert(fs.exists('logo.png'), 'Casper.download() downloads a file');
21 })(casper.test); 13 if (fs.exists('logo.png')) {
14 fs.remove('logo.png');
15 }
16 });
17
18 casper.run(function() {
19 this.test.done();
20 });
......
1 (function(t) { 1 casper.test.comment('Casper.evaluate()');
2 t.comment('Casper.evaluate()');
3 2
4 casper.start(); 3 casper.start();
5 4
6 var params = { 5 var params = {
7 "boolean true": true, 6 "boolean true": true,
8 "boolean false": false, 7 "boolean false": false,
9 "int number": 42, 8 "int number": 42,
10 "float number": 1337.42, 9 "float number": 1337.42,
11 "string": "plop! \"Ÿ£$\" 'no'", 10 "string": "plop! \"Ÿ£$\" 'no'",
12 "array": [1, 2, 3], 11 "array": [1, 2, 3],
13 "object": {a: 1, b: 2} 12 "object": {a: 1, b: 2}
14 }; 13 };
15 14
16 var casperParams = casper.evaluate(function() { 15 var casperParams = casper.evaluate(function() {
17 return __casper_params__; 16 return __casper_params__;
18 }, params); 17 }, params);
19 18
20 casper.test.assertType(casperParams, "object", 'Casper.evaluate() exposes parameters in a dedicated object'); 19 casper.test.assertType(casperParams, "object", 'Casper.evaluate() exposes parameters in a dedicated object');
21 casper.test.assertEquals(Object.keys(casperParams).length, 7, 'Casper.evaluate() object containing parameters has the correct length'); 20 casper.test.assertEquals(Object.keys(casperParams).length, 7, 'Casper.evaluate() object containing parameters has the correct length');
22 21
23 for (var param in casperParams) { 22 for (var param in casperParams) {
24 casper.test.assertEquals(JSON.stringify(casperParams[param]), JSON.stringify(params[param]), 'Casper.evaluate() can pass a ' + param); 23 casper.test.assertEquals(JSON.stringify(casperParams[param]), JSON.stringify(params[param]), 'Casper.evaluate() can pass a ' + param);
25 casper.test.assertEquals(typeof casperParams[param], typeof params[param], 'Casper.evaluate() preserves the ' + param + ' type'); 24 casper.test.assertEquals(typeof casperParams[param], typeof params[param], 'Casper.evaluate() preserves the ' + param + ' type');
26 } 25 }
27 26
28 t.done(); 27 casper.test.done();
29 })(casper.test);
......
1 (function(t) { 1 casper.test.comment('Casper.exists()');
2 t.comment('Casper.exists()');
3 2
4 casper.start('tests/site/index.html', function(self) { 3 casper.start('tests/site/index.html', function() {
5 t.assert(self.exists('a') && !self.exists('chucknorriz'), 'Casper.exists() can check if an element exists'); 4 this.test.assert(this.exists('a') && !this.exists('chucknorriz'), 'Casper.exists() can check if an element exists');
6 }); 5 });
7 6
8 casper.run(function(step) { 7 casper.run(function() {
9 t.done(); 8 this.test.done();
10 }); 9 });
11 })(casper.test);
......
1 (function(t) { 1 casper.test.comment('Casper.fetchText()');
2 t.comment('Casper.fetchText()');
3 2
4 casper.start('tests/site/index.html', function(self) { 3 casper.start('tests/site/index.html', function() {
5 t.assertEquals(self.fetchText('ul li'), 'onetwothree', 'Casper.fetchText() can retrieve text contents'); 4 this.test.assertEquals(this.fetchText('ul li'), 'onetwothree', 'Casper.fetchText() can retrieve text contents');
6 }); 5 });
7 6
8 casper.run(function() { 7 casper.run(function() {
9 t.done(); 8 this.test.done();
10 }); 9 });
11 })(casper.test);
......
1 do(casper) -> 1 step = 0
2 step = 0
3 2
4 # testing resources 3 # testing resources
5 casper.start "tests/site/resources.html", -> 4 casper.start "tests/site/resources.html", ->
6 @test.assertEquals ++step, 1, "step 1" 5 @test.assertEquals ++step, 1, "step 1"
7 @wait 400, -> 6 @wait 400, ->
8 @test.assertEquals ++step, 2, "step 1.1" 7 @test.assertEquals ++step, 2, "step 1.1"
8 @wait 200, ->
9 @test.assertEquals ++step, 3, "step 1.1.1"
9 @wait 200, -> 10 @wait 200, ->
10 @test.assertEquals ++step, 3, "step 1.1.1" 11 @test.assertEquals ++step, 4, "step 1.1.1.1"
11 @wait 200, -> 12 @then ->
12 @test.assertEquals ++step, 4, "step 1.1.1.1" 13 @test.assertEquals ++step, 5, "step 1.1.2.1"
13 @then -> 14 @wait 400, ->
14 @test.assertEquals ++step, 5, "step 1.1.2.1" 15 @test.assertEquals ++step, 6, "step 1.2"
15 @wait 400, ->
16 @test.assertEquals ++step, 6, "step 1.2"
17 16
18 casper.wait 200, -> 17 casper.wait 200, ->
19 @test.assertEquals ++step, 7, "step 2" 18 @test.assertEquals ++step, 7, "step 2"
20 19
21 casper.waitForSelector( 20 casper.waitForSelector(
22 '#noneExistingSelector' 21 '#noneExistingSelector'
23 -> @test.fail "should run into timeout" 22 -> @test.fail "should run into timeout"
24 -> @test.assertEquals ++step, 8, "step 3 sucessfully timed out" 23 -> @test.assertEquals ++step, 8, "step 3 sucessfully timed out"
25 1000 24 1000
26 ) 25 )
27 casper.then -> 26 casper.then ->
28 @test.assertEquals ++step, 9, "step 4" 27 @test.assertEquals ++step, 9, "step 4"
28 @wait 300, ->
29 @test.assertEquals ++step, 10, "step 4.1"
29 @wait 300, -> 30 @wait 300, ->
30 @test.assertEquals ++step, 10, "step 4.1" 31 @test.assertEquals ++step, 11, "step 4.1.1"
31 @wait 300, -> 32 @wait 100, ->
32 @test.assertEquals ++step, 11, "step 4.1.1" 33 @test.assertEquals ++step, 12, "step 5.2"
33 @wait 100, ->
34 @test.assertEquals ++step, 12, "step 5.2"
35 34
36 casper.then -> 35 casper.then ->
37 @test.assertEquals ++step, 13, "last step" 36 @test.assertEquals ++step, 13, "last step"
38 37
39 casper.run(-> @test.done())
...\ No newline at end of file ...\ No newline at end of file
38 casper.run(-> @test.done())
...\ No newline at end of file ...\ No newline at end of file
......
1 (function(t) { 1 casper.start('tests/site/form.html', function() {
2 casper.start('tests/site/form.html', function(self) { 2 this.test.comment('Casper.fill()');
3 t.comment('Casper.fill()'); 3 this.fill('form[action="result.html"]', {
4 self.fill('form[action="result.html"]', { 4 email: 'chuck@norris.com',
5 email: 'chuck@norris.com', 5 content: 'Am watching thou',
6 content: 'Am watching thou', 6 check: true,
7 check: true, 7 choice: 'no',
8 choice: 'no', 8 topic: 'bar',
9 topic: 'bar', 9 file: phantom.libraryPath + '/README.md',
10 file: phantom.libraryPath + '/README.md', 10 'checklist[]': ['1', '3']
11 'checklist[]': ['1', '3']
12 });
13 t.assertEvalEquals(function() {
14 return document.querySelector('input[name="email"]').value;
15 }, 'chuck@norris.com', 'Casper.fill() can fill an input[type=text] form field');
16 t.assertEvalEquals(function() {
17 return document.querySelector('textarea[name="content"]').value;
18 }, 'Am watching thou', 'Casper.fill() can fill a textarea form field');
19 t.assertEvalEquals(function() {
20 return document.querySelector('select[name="topic"]').value;
21 }, 'bar', 'Casper.fill() can pick a value from a select form field');
22 t.assertEvalEquals(function() {
23 return document.querySelector('input[name="check"]').checked;
24 }, true, 'Casper.fill() can check a form checkbox');
25 t.assertEvalEquals(function() {
26 return document.querySelector('input[name="choice"][value="no"]').checked;
27 }, true, 'Casper.fill() can check a form radio button 1/2');
28 t.assertEvalEquals(function() {
29 return document.querySelector('input[name="choice"][value="yes"]').checked;
30 }, false, 'Casper.fill() can check a form radio button 2/2');
31 t.assertEvalEquals(function() {
32 return document.querySelector('input[name="file"]').files.length === 1;
33 }, true, 'Casper.fill() can select a file to upload');
34 t.assertEvalEquals(function() {
35 return (document.querySelector('input[name="checklist[]"][value="1"]').checked &&
36 !document.querySelector('input[name="checklist[]"][value="2"]').checked &&
37 document.querySelector('input[name="checklist[]"][value="3"]').checked);
38 }, true, 'Casper.fill() can fill a list of checkboxes');
39 self.click('input[type="submit"]');
40 }); 11 });
12 this.test.assertEvalEquals(function() {
13 return document.querySelector('input[name="email"]').value;
14 }, 'chuck@norris.com', 'Casper.fill() can fill an input[type=text] form field');
15 this.test.assertEvalEquals(function() {
16 return document.querySelector('textarea[name="content"]').value;
17 }, 'Am watching thou', 'Casper.fill() can fill a textarea form field');
18 this.test.assertEvalEquals(function() {
19 return document.querySelector('select[name="topic"]').value;
20 }, 'bar', 'Casper.fill() can pick a value from a select form field');
21 this.test.assertEvalEquals(function() {
22 return document.querySelector('input[name="check"]').checked;
23 }, true, 'Casper.fill() can check a form checkbox');
24 this.test.assertEvalEquals(function() {
25 return document.querySelector('input[name="choice"][value="no"]').checked;
26 }, true, 'Casper.fill() can check a form radio button 1/2');
27 this.test.assertEvalEquals(function() {
28 return document.querySelector('input[name="choice"][value="yes"]').checked;
29 }, false, 'Casper.fill() can check a form radio button 2/2');
30 this.test.assertEvalEquals(function() {
31 return document.querySelector('input[name="file"]').files.length === 1;
32 }, true, 'Casper.fill() can select a file to upload');
33 this.test.assertEvalEquals(function() {
34 return (document.querySelector('input[name="checklist[]"][value="1"]').checked &&
35 !document.querySelector('input[name="checklist[]"][value="2"]').checked &&
36 document.querySelector('input[name="checklist[]"][value="3"]').checked);
37 }, true, 'Casper.fill() can fill a list of checkboxes');
38 this.click('input[type="submit"]');
39 });
41 40
42 casper.then(function(self) { 41 casper.then(function() {
43 t.comment('Form submitted'); 42 this.test.comment('Form submitted');
44 t.assertUrlMatch(/email=chuck@norris.com/, 'Casper.fill() input[type=email] field was submitted'); 43 this.test.assertUrlMatch(/email=chuck@norris.com/, 'Casper.fill() input[type=email] field was submitted');
45 t.assertUrlMatch(/content=Am\+watching\+thou/, 'Casper.fill() textarea field was submitted'); 44 this.test.assertUrlMatch(/content=Am\+watching\+thou/, 'Casper.fill() textarea field was submitted');
46 t.assertUrlMatch(/check=on/, 'Casper.fill() input[type=checkbox] field was submitted'); 45 this.test.assertUrlMatch(/check=on/, 'Casper.fill() input[type=checkbox] field was submitted');
47 t.assertUrlMatch(/choice=no/, 'Casper.fill() input[type=radio] field was submitted'); 46 this.test.assertUrlMatch(/choice=no/, 'Casper.fill() input[type=radio] field was submitted');
48 t.assertUrlMatch(/topic=bar/, 'Casper.fill() select field was submitted'); 47 this.test.assertUrlMatch(/topic=bar/, 'Casper.fill() select field was submitted');
49 }); 48 });
50 49
51 casper.run(function(self) { 50 casper.run(function() {
52 t.done(); 51 this.test.done();
53 }); 52 });
54 })(casper.test);
......
1 (function(t) { 1 casper.start('tests/site/global.html', function() {
2 casper.start('tests/site/global.html', function(self) { 2 this.test.comment('Casper.getGlobal()');
3 t.comment('Casper.getGlobal()'); 3 this.test.assertEquals(this.getGlobal('myGlobal'), 'awesome string', 'Casper.getGlobal() can retrieve a remote global variable');
4 t.assertEquals(self.getGlobal('myGlobal'), 'awesome string', 'Casper.getGlobal() can retrieve a remote global variable'); 4 this.test.assertRaises(this.getGlobal, ['myUnencodableGlobal'], 'Casper.getGlobal() does not fail trying to encode an unencodable global');
5 t.assertRaises(self.getGlobal, ['myUnencodableGlobal'], 'Casper.getGlobal() does not fail trying to encode an unencodable global'); 5 });
6 });
7 6
8 casper.run(function(self) { 7 casper.run(function() {
9 t.done(); 8 this.test.done();
10 }); 9 });
11 })(casper.test);
......
1 (function(t) { 1 casper.start('tests/site/page1.html');
2 casper.start('tests/site/page1.html'); 2 casper.thenOpen('tests/site/page2.html');
3 casper.thenOpen('tests/site/page2.html'); 3 casper.thenOpen('tests/site/page3.html');
4 casper.thenOpen('tests/site/page3.html');
5 4
6 casper.back(); 5 casper.back();
7 casper.then(function(self) { 6 casper.then(function() {
8 t.comment('navigating history backward'); 7 this.test.comment('navigating history backward');
9 t.assertMatch(self.getCurrentUrl(), /tests\/site\/page2\.html$/, 'Casper.back() can go back an history step'); 8 this.test.assertMatch(this.getCurrentUrl(), /tests\/site\/page2\.html$/, 'Casper.back() can go back an history step');
10 }); 9 });
11 10
12 casper.forward(); 11 casper.forward();
13 casper.then(function(self) { 12 casper.then(function() {
14 t.comment('navigating history forward'); 13 this.test.comment('navigating history forward');
15 t.assertMatch(self.getCurrentUrl(), /tests\/site\/page3\.html$/, 'Casper.forward() can go forward an history step'); 14 this.test.assertMatch(this.getCurrentUrl(), /tests\/site\/page3\.html$/, 'Casper.forward() can go forward an history step');
16 }); 15 });
17 16
18 casper.run(function(self) { 17 casper.run(function() {
19 t.assert(self.history.length > 0, 'Casper.history contains urls'); 18 this.test.assert(this.history.length > 0, 'Casper.history contains urls');
20 t.assertMatch(self.history[0], /tests\/site\/page1\.html$/, 'Casper.history has the correct first url'); 19 this.test.assertMatch(this.history[0], /tests\/site\/page1\.html$/, 'Casper.history has the correct first url');
21 t.done(); 20 this.test.done();
22 }); 21 });
23 })(casper.test);
......
1 (function(t) { 1 // Dear curious test reader,
2 // Casper.options.onStepComplete 2 // The on* family of methods is considered deprecated since 0.6.0; please use events instead
3 casper.start('tests/site/index.html', function(self) {
4 self.options.onStepComplete = function(self, stepResult) {
5 t.comment('Casper.options.onStepComplete()');
6 t.assertEquals(stepResult, 'ok', 'Casper.options.onStepComplete() is called on step complete');
7 self.options.onStepComplete = null;
8 };
9 return 'ok';
10 });
11 3
12 // Casper.options.onResourceRequested & Casper.options.onResourceReceived 4 // Casper.options.onStepComplete
13 casper.then(function(self) { 5 casper.start('tests/site/index.html', function() {
14 self.options.onResourceReceived = function(self, resource) { 6 this.options.onStepComplete = function(self, stepResult) {
15 t.comment('Casper.options.onResourceReceived()'); 7 this.test.comment('Casper.options.onStepComplete()');
16 t.assertType(resource, 'object', 'Casper.options.onResourceReceived() retrieve a resource object'); 8 this.test.assertEquals(stepResult, 'ok', 'Casper.options.onStepComplete() is called on step complete');
17 t.assert('status' in resource, 'Casper.options.onResourceReceived() retrieve a valid resource object'); 9 self.options.onStepComplete = null;
18 self.options.onResourceReceived = null; 10 };
19 }; 11 return 'ok';
20 self.options.onResourceRequested = function(self, request) { 12 });
21 t.comment('Casper.options.onResourceRequested()');
22 t.assertType(request, 'object', 'Casper.options.onResourceRequested() retrieve a request object');
23 t.assert('method' in request, 'Casper.options.onResourceRequested() retrieve a valid request object');
24 self.options.onResourceRequested = null;
25 };
26 self.thenOpen('tests/site/page1.html');
27 });
28 13
29 // Casper.options.onAlert() 14 // Casper.options.onResourceRequested & Casper.options.onResourceReceived
30 casper.then(function(self) { 15 casper.then(function() {
31 self.options.onAlert = function(self, message) { 16 this.options.onResourceReceived = function(self, resource) {
32 t.assertEquals(message, 'plop', 'Casper.options.onAlert() can intercept an alert message'); 17 this.test.comment('Casper.options.onResourceReceived()');
33 }; 18 this.test.assertType(resource, 'object', 'Casper.options.onResourceReceived() retrieve a resource object');
34 }).thenOpen('tests/site/alert.html').thenClick('button', function(self) { 19 this.test.assert('status' in resource, 'Casper.options.onResourceReceived() retrieve a valid resource object');
35 self.options.onAlert = null; 20 self.options.onResourceReceived = null;
36 }); 21 };
22 this.options.onResourceRequested = function(self, request) {
23 this.test.comment('Casper.options.onResourceRequested()');
24 this.test.assertType(request, 'object', 'Casper.options.onResourceRequested() retrieve a request object');
25 this.test.assert('method' in request, 'Casper.options.onResourceRequested() retrieve a valid request object');
26 self.options.onResourceRequested = null;
27 };
28 this.thenOpen('tests/site/page1.html');
29 });
37 30
38 casper.run(function(self) { 31 // Casper.options.onAlert()
39 t.done(); 32 casper.then(function() {
40 }); 33 this.options.onAlert = function(self, message) {
41 })(casper.test); 34 self.test.assertEquals(message, 'plop', 'Casper.options.onAlert() can intercept an alert message');
35 };
36 }).thenOpen('tests/site/alert.html').thenClick('button', function() {
37 this.options.onAlert = null;
38 });
39
40 casper.run(function() {
41 this.test.done();
42 });
......
1 (function(t) { 1 casper.start('tests/site/index.html');
2 casper.start('tests/site/index.html');
3 2
4 var oldLevel = casper.options.logLevel; 3 var oldLevel = casper.options.logLevel;
5 4
6 casper.options.logLevel = 'info'; 5 casper.options.logLevel = 'info';
7 casper.options.verbose = false; 6 casper.options.verbose = false;
8 7
9 t.comment('Casper.log()'); 8 casper.test.comment('Casper.log()');
10 casper.log('foo', 'info'); 9 casper.log('foo', 'info');
11 t.assert(casper.result.log.some(function(e) { 10 casper.test.assert(casper.result.log.some(function(e) {
12 return e.message === 'foo' && e.level === 'info'; 11 return e.message === 'foo' && e.level === 'info';
13 }), 'Casper.log() adds a log entry'); 12 }), 'Casper.log() adds a log entry');
14 13
15 casper.options.logLevel = oldLevel; 14 casper.options.logLevel = oldLevel;
16 casper.options.verbose = true; 15 casper.options.verbose = true;
17 16
18 casper.then(function(self) { 17 casper.then(function() {
19 var oldLevel = casper.options.logLevel; 18 var oldLevel = casper.options.logLevel;
20 casper.options.logLevel = 'debug'; 19 casper.options.logLevel = 'debug';
21 casper.options.verbose = false; 20 casper.options.verbose = false;
22 casper.evaluate(function() { 21 casper.evaluate(function() {
23 __utils__.log('debug message'); 22 __utils__.log('debug message');
24 __utils__.log('info message', 'info'); 23 __utils__.log('info message', 'info');
25 });
26 t.assert(casper.result.log.some(function(e) {
27 return e.message === 'debug message' && e.level === 'debug' && e.space === 'remote';
28 }), 'ClientUtils.log() adds a log entry');
29 t.assert(casper.result.log.some(function(e) {
30 return e.message === 'info message' && e.level === 'info' && e.space === 'remote';
31 }), 'ClientUtils.log() adds a log entry at a given level');
32 casper.options.logLevel = oldLevel;
33 casper.options.verbose = true;
34 }); 24 });
25 this.test.assert(casper.result.log.some(function(e) {
26 return e.message === 'debug message' && e.level === 'debug' && e.space === 'remote';
27 }), 'ClientUtils.log() adds a log entry');
28 this.test.assert(casper.result.log.some(function(e) {
29 return e.message === 'info message' && e.level === 'info' && e.space === 'remote';
30 }), 'ClientUtils.log() adds a log entry at a given level');
31 casper.options.logLevel = oldLevel;
32 casper.options.verbose = true;
33 });
35 34
36 casper.run(function(self) { 35 casper.run(function() {
37 t.assertEquals(self.result.log.length, 3, 'Casper.log() logged messages'); 36 this.test.assertEquals(this.result.log.length, 3, 'Casper.log() logged messages');
38 t.done(); 37 this.test.done();
39 }); 38 });
40 })(casper.test);
......
1 (function(t) { 1 var t = casper.test, current = 0, tests = [
2 var current = 0, tests = [ 2 function(settings) {
3 function(settings) { 3 t.assertEquals(settings, {
4 t.assertEquals(settings, { 4 method: "get"
5 method: "get" 5 }, "Casper.open() used the expected GET settings");
6 }, "Casper.open() used the expected GET settings"); 6 },
7 }, 7 function(settings) {
8 function(settings) { 8 t.assertEquals(settings, {
9 t.assertEquals(settings, { 9 method: "post",
10 method: "post", 10 data: "plop=42&chuck=norris"
11 data: "plop=42&chuck=norris" 11 }, "Casper.open() used the expected POST settings");
12 }, "Casper.open() used the expected POST settings"); 12 },
13 }, 13 function(settings) {
14 function(settings) { 14 t.assertEquals(settings, {
15 t.assertEquals(settings, { 15 method: "put",
16 method: "put", 16 data: "plop=42&chuck=norris"
17 data: "plop=42&chuck=norris" 17 }, "Casper.open() used the expected PUT settings");
18 }, "Casper.open() used the expected PUT settings"); 18 },
19 }, 19 function(settings) {
20 function(settings) { 20 t.assertEquals(settings, {
21 t.assertEquals(settings, { 21 method: "get",
22 method: "get", 22 username: 'bob',
23 username: 'bob', 23 password: 'sinclar'
24 password: 'sinclar' 24 }, "Casper.open() used the expected HTTP auth settings");
25 }, "Casper.open() used the expected HTTP auth settings"); 25 }
26 } 26 ];
27 ];
28 27
29 casper.start(); 28 casper.start();
30 29
31 casper.on('open', function(url, settings) { 30 casper.on('open', function(url, settings) {
32 tests[current++](settings); 31 tests[current++](settings);
33 }); 32 });
34 33
35 // GET 34 // GET
36 casper.open('tests/site/index.html').then(function() { 35 casper.open('tests/site/index.html').then(function() {
37 t.pass("Casper.open() can open and load a location using GET"); 36 t.pass("Casper.open() can open and load a location using GET");
38 }); 37 });
39 38
40 // POST 39 // POST
41 casper.open('tests/site/index.html', { 40 casper.open('tests/site/index.html', {
42 method: 'post', 41 method: 'post',
43 data: { 42 data: {
44 plop: 42, 43 plop: 42,
45 chuck: 'norris' 44 chuck: 'norris'
46 } 45 }
47 }).then(function() { 46 }).then(function() {
48 t.pass("Casper.open() can open and load a location using POST"); 47 t.pass("Casper.open() can open and load a location using POST");
49 }); 48 });
50 49
51 // PUT 50 // PUT
52 casper.open('tests/site/index.html', { 51 casper.open('tests/site/index.html', {
53 method: 'put', 52 method: 'put',
54 data: { 53 data: {
55 plop: 42, 54 plop: 42,
56 chuck: 'norris' 55 chuck: 'norris'
57 } 56 }
58 }).then(function() { 57 }).then(function() {
59 t.pass("Casper.open() can open and load a location using PUT"); 58 t.pass("Casper.open() can open and load a location using PUT");
60 }); 59 });
61 60
62 // HTTP Auth 61 // HTTP Auth
63 casper.open('tests/site/index.html', { 62 casper.open('tests/site/index.html', {
64 method: 'get', 63 method: 'get',
65 username: 'bob', 64 username: 'bob',
66 password: 'sinclar' 65 password: 'sinclar'
67 }).then(function() { 66 }).then(function() {
68 t.pass("Casper.open() can open and load a location using HTTP auth"); 67 t.pass("Casper.open() can open and load a location using HTTP auth");
69 }); 68 });
70 69
71 casper.run(function() { 70 casper.run(function() {
72 this.removeAllListeners('open'); 71 this.removeAllListeners('open');
73 t.done(); 72 t.done();
74 }); 73 });
75 })(casper.test);
......
1 do(casper) -> 1 casper.start "tests/site/resources.html", ->
2 casper.start "tests/site/resources.html", -> 2 @test.assertEquals @resources.length, 1, "only one resource found"
3 @test.assertEquals @resources.length, 1, "only one resource found" 3 onTime = ->
4 onTime = -> 4 @test.assertEquals(
5 @test.assertEquals( 5 @resources.length
6 @resources.length 6 2
7 2 7 "two resources found"
8 "two resources found" 8 )
9 ) 9 @test.assertResourceExists(
10 @test.assertResourceExists( 10 /phantom\.png/i
11 /phantom\.png/i 11 "phantom image found via test RegExp"
12 "phantom image found via test RegExp" 12 )
13 ) 13 @test.assertResourceExists(
14 @test.assertResourceExists( 14 (res) -> res.url.match "phantom.png"
15 (res) -> res.url.match "phantom.png" 15 "phantom image found via test Function"
16 "phantom image found via test Function" 16 )
17 ) 17 @test.assertResourceExists(
18 @test.assertResourceExists( 18 "phantom.png"
19 "phantom.png" 19 "phantom image found via test String"
20 "phantom image found via test String" 20 )
21 ) 21 onTimeout = -> @test.fail "waitForResource timeout occured"
22 onTimeout = -> @test.fail "waitForResource timeout occured" 22 @waitForResource "phantom.png", onTime, onTimeout
23 @waitForResource "phantom.png", onTime, onTimeout
24 23
25 casper.run(-> @test.done()) 24 casper.run(-> @test.done())
......
1 (function(t) { 1 casper.test.comment('Casper.start()');
2 t.comment('Casper.start()');
3 2
4 casper.start('tests/site/index.html', function(self) { 3 casper.start('tests/site/index.html', function() {
5 t.pass('Casper.start() can chain a next step'); 4 this.test.pass('Casper.start() can chain a next step');
6 t.assertTitle('CasperJS test index', 'Casper.start() opened the passed url'); 5 this.test.assertTitle('CasperJS test index', 'Casper.start() opened the passed url');
7 t.assertEval(function() { 6 this.test.assertEval(function() {
8 return typeof(__utils__) === "object"; 7 return typeof(__utils__) === "object";
9 }, 'Casper.start() injects ClientUtils instance within remote DOM'); 8 }, 'Casper.start() injects ClientUtils instance within remote DOM');
10 }); 9 });
11 10
12 t.assert(casper.started, 'Casper.start() started'); 11 casper.test.assert(casper.started, 'Casper.start() started');
13 12
14 casper.run(function(self) { 13 casper.run(function() {
15 t.done(); 14 this.test.done();
16 }); 15 });
17 })(casper.test);
......
1 (function(t) { 1 casper.test.comment('Casper.then()');
2 t.comment('Casper.then()');
3 2
4 casper.start('tests/site/index.html'); 3 casper.start('tests/site/index.html');
5 4
6 var nsteps = casper.steps.length; 5 var nsteps = casper.steps.length;
7 6
8 casper.then(function(self) { 7 casper.then(function(self) {
9 t.assertTitle('CasperJS test index', 'Casper.then() added a new step'); 8 this.test.assertTitle('CasperJS test index', 'Casper.then() added a new step');
10 }); 9 });
11 10
12 t.assertEquals(casper.steps.length, nsteps + 1, 'Casper.then() can add a new step'); 11 casper.test.assertEquals(casper.steps.length, nsteps + 1, 'Casper.then() can add a new step');
13 12
14 t.comment('Casper.thenOpen()'); 13 casper.test.comment('Casper.thenOpen()');
15 14
16 casper.thenOpen('tests/site/test.html'); 15 casper.thenOpen('tests/site/test.html');
17 16
18 t.assertEquals(casper.steps.length, nsteps + 2, 'Casper.thenOpen() can add a new step'); 17 casper.test.assertEquals(casper.steps.length, nsteps + 2, 'Casper.thenOpen() can add a new step');
19 18
20 casper.thenOpen('tests/site/test.html', function(self) { 19 casper.thenOpen('tests/site/test.html', function() {
21 t.assertTitle('CasperJS test target', 'Casper.thenOpen() opened a location and executed a step'); 20 this.test.assertTitle('CasperJS test target', 'Casper.thenOpen() opened a location and executed a step');
22 }); 21 });
23 22
24 t.assertEquals(casper.steps.length, nsteps + 4, 'Casper.thenOpen() can add a new step for opening, plus another step'); 23 casper.test.assertEquals(casper.steps.length, nsteps + 4, 'Casper.thenOpen() can add a new step for opening, plus another step');
25 24
26 t.comment('Casper.each()'); 25 casper.test.comment('Casper.each()');
27 casper.each([1, 2, 3], function(self, item, i) { 26 casper.each([1, 2, 3], function(self, item, i) {
28 self.test.assertEquals(i, item - 1, 'Casper.each() passes a contextualized index'); 27 self.test.assertEquals(i, item - 1, 'Casper.each() passes a contextualized index');
29 }); 28 });
30 29
31 casper.run(function() { 30 casper.run(function() {
32 t.done(); 31 this.test.done();
33 }); 32 });
34 })(casper.test);
......
1 (function(t) { 1 casper.test.comment('Casper.viewport()');
2 t.comment('Casper.viewport()');
3 2
4 casper.start(); 3 casper.start();
5 4
6 casper.viewport(1337, 999); 5 casper.viewport(1337, 999);
7 6
8 t.assertEquals(casper.page.viewportSize.width, 1337, 'Casper.viewport() can change the width of page viewport'); 7 casper.test.assertEquals(casper.page.viewportSize.width, 1337, 'Casper.viewport() can change the width of page viewport');
9 t.assertEquals(casper.page.viewportSize.height, 999, 'Casper.viewport() can change the height of page viewport'); 8 casper.test.assertEquals(casper.page.viewportSize.height, 999, 'Casper.viewport() can change the height of page viewport');
10 t.assertRaises(casper.viewport, ['a', 'b'], 'Casper.viewport() validates viewport size data'); 9 casper.test.assertRaises(casper.viewport, ['a', 'b'], 'Casper.viewport() validates viewport size data');
11 10
12 t.done(); 11 casper.test.done();
13 })(casper.test);
......
1 (function(t) { 1 casper.start('tests/site/visible.html', function() {
2 casper.start('tests/site/visible.html', function(self) { 2 this.test.comment('Casper.visible()');
3 self.test.comment('Casper.visible()'); 3 this.test.assert(this.visible('#img1'), 'Casper.visible() can detect if an element is visible');
4 self.test.assert(self.visible('#img1'), 'Casper.visible() can detect if an element is visible'); 4 this.test.assert(!this.visible('#img2'), 'Casper.visible() can detect if an element is invisible');
5 self.test.assert(!self.visible('#img2'), 'Casper.visible() can detect if an element is invisible'); 5 this.test.assert(!this.visible('#img3'), 'Casper.visible() can detect if an element is invisible');
6 self.test.assert(!self.visible('#img3'), 'Casper.visible() can detect if an element is invisible'); 6 this.waitWhileVisible('#img1', function() {
7 self.waitWhileVisible('#img1', function(self) { 7 this.test.comment('Casper.waitWhileVisible()');
8 self.test.comment('Casper.waitWhileVisible()'); 8 this.test.pass('Casper.waitWhileVisible() can wait while an element is visible');
9 self.test.pass('Casper.waitWhileVisible() can wait while an element is visible'); 9 }, function() {
10 }, function(self) { 10 this.test.comment('Casper.waitWhileVisible()');
11 self.test.comment('Casper.waitWhileVisible()'); 11 this.test.fail('Casper.waitWhileVisible() can wait while an element is visible');
12 self.test.fail('Casper.waitWhileVisible() can wait while an element is visible'); 12 }, 2000);
13 }, 2000); 13 });
14 });
15 14
16 casper.run(function(self) { 15 casper.run(function() {
17 t.done(); 16 this.test.done();
18 }); 17 });
19 })(casper.test);
......
1 (function(t) { 1 var waitStart;
2 var waitStart;
3 2
4 casper.start('tests/site/index.html', function(self) { 3 casper.start('tests/site/index.html', function() {
5 waitStart = new Date().getTime(); 4 waitStart = new Date().getTime();
6 }); 5 });
7 6
8 casper.wait(1000, function(self) { 7 casper.wait(1000, function() {
9 self.test.comment('Casper.wait()'); 8 this.test.comment('Casper.wait()');
10 self.test.assert(new Date().getTime() - waitStart > 1000, 'Casper.wait() can wait for a given amount of time'); 9 this.test.assert(new Date().getTime() - waitStart > 1000, 'Casper.wait() can wait for a given amount of time');
11 // Casper.waitFor() 10 // Casper.waitFor()
12 casper.thenOpen('tests/site/waitFor.html', function(self) { 11 casper.thenOpen('tests/site/waitFor.html', function() {
13 casper.test.comment('Casper.waitFor()'); 12 this.test.comment('Casper.waitFor()');
14 self.waitFor(function(self) { 13 this.waitFor(function() {
15 return self.evaluate(function() { 14 return this.evaluate(function() {
16 return document.querySelectorAll('li').length === 4; 15 return document.querySelectorAll('li').length === 4;
17 });
18 }, function(self) {
19 self.test.pass('Casper.waitFor() can wait for something to happen');
20 }, function(self) {
21 self.test.fail('Casper.waitFor() can wait for something to happen');
22 }); 16 });
17 }, function() {
18 this.test.pass('Casper.waitFor() can wait for something to happen');
19 }, function() {
20 this.test.fail('Casper.waitFor() can wait for something to happen');
23 }); 21 });
24 }); 22 });
23 });
25 24
26 casper.run(function(self) { 25 casper.run(function() {
27 t.done(); 26 this.test.done();
28 }); 27 });
29 })(casper.test);
......
1 (function(t) { 1 var cli = require('cli'), t = casper.test;
2 var cli = require('cli');
3 2
4 t.comment('parse(), get(), has()'); 3 t.comment('parse(), get(), has()');
5 4
6 (function(parsed) { 5 (function(parsed) {
7 t.assertEquals(parsed.args, [], 'parse() returns expected positional args array'); 6 t.assertEquals(parsed.args, [], 'parse() returns expected positional args array');
8 t.assertEquals(parsed.options, {}, 'parse() returns expected options object'); 7 t.assertEquals(parsed.options, {}, 'parse() returns expected options object');
9 t.assertEquals(parsed.get(0), undefined, 'parse() does not return inexistant positional arg'); 8 t.assertEquals(parsed.get(0), undefined, 'parse() does not return inexistant positional arg');
10 t.assertEquals(parsed.get('blah'), undefined, 'parse() does not return inexistant option'); 9 t.assertEquals(parsed.get('blah'), undefined, 'parse() does not return inexistant option');
11 t.assert(!parsed.has(0), 'has() checks if an arg is set'); 10 t.assert(!parsed.has(0), 'has() checks if an arg is set');
12 t.assert(!parsed.has('blah'), 'has() checks if an option is set'); 11 t.assert(!parsed.has('blah'), 'has() checks if an option is set');
13 })(cli.parse([])); 12 })(cli.parse([]));
14 13
15 (function(parsed) { 14 (function(parsed) {
16 t.assertEquals(parsed.args, ['foo', 'bar'], 'parse() returns expected positional args array'); 15 t.assertEquals(parsed.args, ['foo', 'bar'], 'parse() returns expected positional args array');
17 t.assertEquals(parsed.options, {}, 'parse() returns expected options object'); 16 t.assertEquals(parsed.options, {}, 'parse() returns expected options object');
18 t.assertEquals(parsed.get(0), 'foo', 'parse() retrieve first positional arg'); 17 t.assertEquals(parsed.get(0), 'foo', 'parse() retrieve first positional arg');
19 t.assertEquals(parsed.get(1), 'bar', 'parse() retrieve second positional arg'); 18 t.assertEquals(parsed.get(1), 'bar', 'parse() retrieve second positional arg');
20 t.assert(parsed.has(0), 'has() checks if an arg is set'); 19 t.assert(parsed.has(0), 'has() checks if an arg is set');
21 t.assert(parsed.has(1), 'has() checks if an arg is set'); 20 t.assert(parsed.has(1), 'has() checks if an arg is set');
22 t.assert(!parsed.has(2), 'has() checks if an arg is not set'); 21 t.assert(!parsed.has(2), 'has() checks if an arg is not set');
23 })(cli.parse(['foo', 'bar'])); 22 })(cli.parse(['foo', 'bar']));
24 23
25 (function(parsed) { 24 (function(parsed) {
26 t.assertEquals(parsed.args, [], 'parse() returns expected positional args array'); 25 t.assertEquals(parsed.args, [], 'parse() returns expected positional args array');
27 t.assertEquals(parsed.options, {foo: 'bar', baz: true}, 'parse() returns expected options object'); 26 t.assertEquals(parsed.options, {foo: 'bar', baz: true}, 'parse() returns expected options object');
28 t.assertEquals(parsed.get('foo'), 'bar', 'parse() retrieve an option value'); 27 t.assertEquals(parsed.get('foo'), 'bar', 'parse() retrieve an option value');
29 t.assert(parsed.get('baz'), 'parse() retrieve boolean option flag'); 28 t.assert(parsed.get('baz'), 'parse() retrieve boolean option flag');
30 t.assert(parsed.has("foo"), 'has() checks if an option is set'); 29 t.assert(parsed.has("foo"), 'has() checks if an option is set');
31 t.assert(parsed.has("baz"), 'has() checks if an option is set'); 30 t.assert(parsed.has("baz"), 'has() checks if an option is set');
32 })(cli.parse(['--foo=bar', '--baz'])); 31 })(cli.parse(['--foo=bar', '--baz']));
33 32
34 (function(parsed) { 33 (function(parsed) {
35 t.assertEquals(parsed.args, [], 'parse() returns expected positional args array'); 34 t.assertEquals(parsed.args, [], 'parse() returns expected positional args array');
36 t.assertEquals(parsed.options, { '&é"à': 42 }, 'parse() returns expected options object'); 35 t.assertEquals(parsed.options, { '&é"à': 42 }, 'parse() returns expected options object');
37 t.assertEquals(parsed.get('&é"à'), 42, 'parse() handles options with exotic names'); 36 t.assertEquals(parsed.get('&é"à'), 42, 'parse() handles options with exotic names');
38 t.assert(parsed.has('&é"à'), 'has() checks if an option is set'); 37 t.assert(parsed.has('&é"à'), 'has() checks if an option is set');
39 })(cli.parse(['--&é"à=42'])); 38 })(cli.parse(['--&é"à=42']));
40 39
41 (function(parsed) { 40 (function(parsed) {
42 t.assertEquals(parsed.args, ['foo & bar', 'baz & boz'], 'parse() returns expected positional args array'); 41 t.assertEquals(parsed.args, ['foo & bar', 'baz & boz'], 'parse() returns expected positional args array');
43 t.assertEquals(parsed.options, { universe: 42, lap: 13.37, chucknorris: true, oops: false }, 'parse() returns expected options object'); 42 t.assertEquals(parsed.options, { universe: 42, lap: 13.37, chucknorris: true, oops: false }, 'parse() returns expected options object');
44 t.assertEquals(parsed.get('universe'), 42, 'parse() can cast a numeric option value'); 43 t.assertEquals(parsed.get('universe'), 42, 'parse() can cast a numeric option value');
45 t.assertEquals(parsed.get('lap'), 13.37, 'parse() can cast a float option value'); 44 t.assertEquals(parsed.get('lap'), 13.37, 'parse() can cast a float option value');
46 t.assertType(parsed.get('lap'), "number", 'parse() can cast a boolean value'); 45 t.assertType(parsed.get('lap'), "number", 'parse() can cast a boolean value');
47 t.assert(parsed.get('chucknorris'), 'parse() can get a flag value by its option name'); 46 t.assert(parsed.get('chucknorris'), 'parse() can get a flag value by its option name');
48 t.assertType(parsed.get('oops'), "boolean", 'parse() can cast a boolean value'); 47 t.assertType(parsed.get('oops'), "boolean", 'parse() can cast a boolean value');
49 t.assertEquals(parsed.get('oops'), false, 'parse() can cast a boolean value'); 48 t.assertEquals(parsed.get('oops'), false, 'parse() can cast a boolean value');
50 t.assert(parsed.has(0), 'has() checks if an arg is set'); 49 t.assert(parsed.has(0), 'has() checks if an arg is set');
51 t.assert(parsed.has(1), 'has() checks if an arg is set'); 50 t.assert(parsed.has(1), 'has() checks if an arg is set');
52 t.assert(parsed.has("universe"), 'has() checks if an option is set'); 51 t.assert(parsed.has("universe"), 'has() checks if an option is set');
53 t.assert(parsed.has("lap"), 'has() checks if an option is set'); 52 t.assert(parsed.has("lap"), 'has() checks if an option is set');
54 t.assert(parsed.has("chucknorris"), 'has() checks if an option is set'); 53 t.assert(parsed.has("chucknorris"), 'has() checks if an option is set');
55 t.assert(parsed.has("oops"), 'has() checks if an option is set'); 54 t.assert(parsed.has("oops"), 'has() checks if an option is set');
56 55
57 t.comment('drop()'); 56 t.comment('drop()');
58 57
59 parsed.drop(0); 58 parsed.drop(0);
60 t.assertEquals(parsed.get(0), 'baz & boz', 'drop() dropped arg'); 59 t.assertEquals(parsed.get(0), 'baz & boz', 'drop() dropped arg');
61 parsed.drop("universe"); 60 parsed.drop("universe");
62 t.assert(!parsed.has("universe"), 'drop() dropped option'); 61 t.assert(!parsed.has("universe"), 'drop() dropped option');
63 t.assertEquals(parsed.args, ["baz & boz"], 'drop() did not affect other args'); 62 t.assertEquals(parsed.args, ["baz & boz"], 'drop() did not affect other args');
64 t.assertEquals(parsed.options, { 63 t.assertEquals(parsed.options, {
65 lap: 13.37, 64 lap: 13.37,
66 chucknorris: true, 65 chucknorris: true,
67 oops: false 66 oops: false
68 }, 'drop() did not affect other options'); 67 }, 'drop() did not affect other options');
69 })(cli.parse(['foo & bar', 'baz & boz', '--universe=42', '--lap=13.37', '--chucknorris', '--oops=false'])); 68 })(cli.parse(['foo & bar', 'baz & boz', '--universe=42', '--lap=13.37', '--chucknorris', '--oops=false']));
70 69
71 t.done(); 70 t.done();
72 })(casper.test);
......
1 "A small subset of the run.js written in coffeescript" 1 "A small subset of the run.js written in coffeescript"
2 2
3 do (casper) -> 3 steps = 0
4 steps = 0
5 4
6 casper.options.onStepComplete = -> steps++ 5 casper.options.onStepComplete = -> steps++
7 6
8 casper.start "tests/site/index.html", -> 7 casper.start "tests/site/index.html", ->
9 @test.assertTitle "CasperJS test index", "Casper.start() casper can start itself an open an url" 8 @test.assertTitle "CasperJS test index", "Casper.start() casper can start itself an open an url"
10 @test.assertEquals @fetchText("ul li"), "onetwothree", "Casper.fetchText() can retrieves text contents" 9 @test.assertEquals @fetchText("ul li"), "onetwothree", "Casper.fetchText() can retrieves text contents"
11 @click "a[href=\"test.html\"]" 10 @click "a[href=\"test.html\"]"
12 11
13 casper.then -> 12 casper.then ->
14 @test.assertTitle "CasperJS test target", "Casper.click() casper can click on a text link" 13 @test.assertTitle "CasperJS test target", "Casper.click() casper can click on a text link"
15 @click "a[href=\"form.html\"]" 14 @click "a[href=\"form.html\"]"
16 15
17 casper.run -> 16 casper.run ->
18 @test.assertEquals steps, 3, "Casper.options.onStepComplete() is called on step complete" 17 @test.assertEquals steps, 3, "Casper.options.onStepComplete() is called on step complete"
19 @options.onStepComplete = null 18 @options.onStepComplete = null
20 @test.done() 19 @test.done()
......
1 (function(t) { 1 var error;
2 var error;
3 2
4 function foo() { 3 function foo() {
5 bar(); 4 bar();
6 } 5 }
7 6
8 function bar() { 7 function bar() {
9 throw new CasperError('bar'); 8 throw new CasperError('bar');
10 } 9 }
11 10
12 try { 11 try {
13 foo(); 12 foo();
14 } catch (e) { 13 } catch (e) {
15 error = e; 14 error = e;
16 } 15 }
17 16
18 t.assertType(error.stack, "string", "CasperError() has a stack string property set"); 17 casper.test.assertType(error.stack, "string", "CasperError() has a stack string property set");
19 t.assertMatch(error.stack, /^CasperError: bar\s/, "CasperError() has the expected stack value"); 18 casper.test.assertMatch(error.stack, /^CasperError: bar\s/, "CasperError() has the expected stack value");
20 19
21 t.done();
22 })(casper.test);
...\ No newline at end of file ...\ No newline at end of file
20 casper.test.done();
......
1 (function(t) { 1 var t = casper.test;
2 function createInjector(fn, values) { 2 var createInjector = function(fn, values) {
3 return require('injector').create(fn, values); 3 return require('injector').create(fn, values);
4 } 4 };
5 var testFn = function(a, b) { return a + b; };
6 var injector = createInjector(testFn);
7 var extract = injector.extract(testFn);
5 8
6 var testFn = function(a, b) { return a + b; }; 9 t.comment('FunctionArgsInjector.extract()');
7 var injector = createInjector(testFn); 10 t.assertType(extract, "object", 'FunctionArgsInjector.extract() returns an object');
8 var extract = injector.extract(testFn); 11 t.assertEquals(extract.name, null, 'FunctionArgsInjector.extract() process function name as expected');
12 t.assertEquals(extract.body, 'return a + b;', 'FunctionArgsInjector.extract() process function body as expected');
13 t.assertEquals(extract.args, ['a', 'b'], 'FunctionArgsInjector.extract() process function args as expected');
9 14
10 t.comment('FunctionArgsInjector.extract()'); 15 function Plop(foo, bar) {
11 t.assertType(extract, "object", 'FunctionArgsInjector.extract() returns an object'); 16 return 'foo: ' + foo +', bar: ' + bar;
12 t.assertEquals(extract.name, null, 'FunctionArgsInjector.extract() process function name as expected'); 17 }
13 t.assertEquals(extract.body, 'return a + b;', 'FunctionArgsInjector.extract() process function body as expected'); 18 function Plip() { return 'plop'; }
14 t.assertEquals(extract.args, ['a', 'b'], 'FunctionArgsInjector.extract() process function args as expected'); 19 function foo_bar(boz) {}
20 var gni = function ($bubu_bibi, __popo__) {};
21 var gno = function ( arg1, /*plop*/ arg2 ) { };
22 t.assertEquals(injector.extract(Plop), {
23 name: 'Plop',
24 args: ['foo', 'bar'],
25 body: "return 'foo: ' + foo +', bar: ' + bar;"
26 }, 'FunctionArgsInjector.extract() handles named functions with arguments and body');
27 t.assertEquals(injector.extract(Plip), {
28 name: 'Plip',
29 args: [],
30 body: "return 'plop';"
31 }, 'FunctionArgsInjector.extract() handles functions with no arguments');
32 t.assertEquals(injector.extract(foo_bar), {
33 name: 'foo_bar',
34 args: ['boz'],
35 body: ""
36 }, 'FunctionArgsInjector.extract() handles functions with no body');
37 t.assertEquals(injector.extract(gni), {
38 name: null,
39 args: ['$bubu_bibi', '__popo__'],
40 body: ""
41 }, 'FunctionArgsInjector.extract() handles anonymous functions with complex args passed');
42 t.assertEquals(injector.extract(gno), {
43 name: null,
44 args: ['arg1', 'arg2'],
45 body: ""
46 }, 'FunctionArgsInjector.extract() handles can filter comments in function args');
15 47
16 function Plop(foo, bar) { 48 t.comment('FunctionArgsInjector.process()');
17 return 'foo: ' + foo +', bar: ' + bar; 49 var processed;
18 } 50 eval('processed = ' + injector.process({ a: 1, b: 2 }));
19 function Plip() { return 'plop'; }
20 function foo_bar(boz) {}
21 var gni = function ($bubu_bibi, __popo__) {};
22 var gno = function ( arg1, /*plop*/ arg2 ) { };
23 t.assertEquals(injector.extract(Plop), {
24 name: 'Plop',
25 args: ['foo', 'bar'],
26 body: "return 'foo: ' + foo +', bar: ' + bar;"
27 }, 'FunctionArgsInjector.extract() handles named functions with arguments and body');
28 t.assertEquals(injector.extract(Plip), {
29 name: 'Plip',
30 args: [],
31 body: "return 'plop';"
32 }, 'FunctionArgsInjector.extract() handles functions with no arguments');
33 t.assertEquals(injector.extract(foo_bar), {
34 name: 'foo_bar',
35 args: ['boz'],
36 body: ""
37 }, 'FunctionArgsInjector.extract() handles functions with no body');
38 t.assertEquals(injector.extract(gni), {
39 name: null,
40 args: ['$bubu_bibi', '__popo__'],
41 body: ""
42 }, 'FunctionArgsInjector.extract() handles anonymous functions with complex args passed');
43 t.assertEquals(injector.extract(gno), {
44 name: null,
45 args: ['arg1', 'arg2'],
46 body: ""
47 }, 'FunctionArgsInjector.extract() handles can filter comments in function args');
48 51
49 t.comment('FunctionArgsInjector.process()'); 52 t.assertType(processed, "function", 'FunctionArgsInjector.process() processed a function');
50 var processed; 53 t.assertEquals(processed(), 3, 'FunctionArgsInjector.process() processed the function correctly');
51 eval('processed = ' + injector.process({ a: 1, b: 2 }));
52 54
53 t.assertType(processed, "function", 'FunctionArgsInjector.process() processed a function'); 55 t.done();
54 t.assertEquals(processed(), 3, 'FunctionArgsInjector.process() processed the function correctly');
55
56 t.done();
57 })(casper.test);
......
1 (function(t) { 1 var t = casper.test;
2 t.comment('Tester.testEquals()');
3 t.assert(casper.test.testEquals(null, null), 'Tester.testEquals() null equality');
4 t.assertNot(casper.test.testEquals(null, undefined), 'Tester.testEquals() null vs. undefined inequality');
5 t.assert(casper.test.testEquals("hi", "hi"), 'Tester.testEquals() string equality');
6 t.assertNot(casper.test.testEquals("hi", "ih"), 'Tester.testEquals() string inequality');
7 t.assert(casper.test.testEquals(5, 5), 'Tester.testEquals() number equality');
8 t.assertNot(casper.test.testEquals("5", 5), 'Tester.testEquals() number equality without implicit cast');
9 t.assert(casper.test.testEquals(5, 5.0), 'Tester.testEquals() number equality with cast');
10 t.assertNot(casper.test.testEquals(5, 10), 'Tester.testEquals() number inequality');
11 t.assert(casper.test.testEquals([], []), 'Tester.testEquals() empty array equality');
12 t.assert(casper.test.testEquals([1,2], [1,2]), 'Tester.testEquals() array equality');
13 t.assert(casper.test.testEquals([1,2,[1,2,function(){}]], [1,2,[1,2,function(){}]]), 'Tester.testEquals() complex array equality');
14 t.assertNot(casper.test.testEquals([1,2,[1,2,function(a){}]], [1,2,[1,2,function(b){}]]), 'Tester.testEquals() complex array inequality');
15 t.assertNot(casper.test.testEquals([1,2], [2,1]), 'Tester.testEquals() shuffled array inequality');
16 t.assertNot(casper.test.testEquals([1,2], [1,2,3]), 'Tester.testEquals() array length inequality');
17 t.assert(casper.test.testEquals({}, {}), 'Tester.testEquals() empty object equality');
18 t.assert(casper.test.testEquals({a:1,b:2}, {a:1,b:2}), 'Tester.testEquals() object length equality');
19 t.assert(casper.test.testEquals({a:1,b:2}, {b:2,a:1}), 'Tester.testEquals() shuffled object keys equality');
20 t.assertNot(casper.test.testEquals({a:1,b:2}, {a:1,b:3}), 'Tester.testEquals() object inequality');
21 t.assert(casper.test.testEquals({1:{name:"bob",age:28}, 2:{name:"john",age:26}}, {1:{name:"bob",age:28}, 2:{name:"john",age:26}}), 'Tester.testEquals() complex object equality');
22 t.assertNot(casper.test.testEquals({1:{name:"bob",age:28}, 2:{name:"john",age:26}}, {1:{name:"bob",age:28}, 2:{name:"john",age:27}}), 'Tester.testEquals() complex object inequality');
23 t.assert(casper.test.testEquals(function(x){return x;}, function(x){return x;}), 'Tester.testEquals() function equality');
24 t.assertNot(casper.test.testEquals(function(x){return x;}, function(y){return y+2;}), 'Tester.testEquals() function inequality');
25 2
26 t.done(); 3 t.comment('Tester.testEquals()');
27 })(casper.test); 4 t.assert(casper.test.testEquals(null, null), 'Tester.testEquals() null equality');
5 t.assertNot(casper.test.testEquals(null, undefined), 'Tester.testEquals() null vs. undefined inequality');
6 t.assert(casper.test.testEquals("hi", "hi"), 'Tester.testEquals() string equality');
7 t.assertNot(casper.test.testEquals("hi", "ih"), 'Tester.testEquals() string inequality');
8 t.assert(casper.test.testEquals(5, 5), 'Tester.testEquals() number equality');
9 t.assertNot(casper.test.testEquals("5", 5), 'Tester.testEquals() number equality without implicit cast');
10 t.assert(casper.test.testEquals(5, 5.0), 'Tester.testEquals() number equality with cast');
11 t.assertNot(casper.test.testEquals(5, 10), 'Tester.testEquals() number inequality');
12 t.assert(casper.test.testEquals([], []), 'Tester.testEquals() empty array equality');
13 t.assert(casper.test.testEquals([1,2], [1,2]), 'Tester.testEquals() array equality');
14 t.assert(casper.test.testEquals([1,2,[1,2,function(){}]], [1,2,[1,2,function(){}]]), 'Tester.testEquals() complex array equality');
15 t.assertNot(casper.test.testEquals([1,2,[1,2,function(a){}]], [1,2,[1,2,function(b){}]]), 'Tester.testEquals() complex array inequality');
16 t.assertNot(casper.test.testEquals([1,2], [2,1]), 'Tester.testEquals() shuffled array inequality');
17 t.assertNot(casper.test.testEquals([1,2], [1,2,3]), 'Tester.testEquals() array length inequality');
18 t.assert(casper.test.testEquals({}, {}), 'Tester.testEquals() empty object equality');
19 t.assert(casper.test.testEquals({a:1,b:2}, {a:1,b:2}), 'Tester.testEquals() object length equality');
20 t.assert(casper.test.testEquals({a:1,b:2}, {b:2,a:1}), 'Tester.testEquals() shuffled object keys equality');
21 t.assertNot(casper.test.testEquals({a:1,b:2}, {a:1,b:3}), 'Tester.testEquals() object inequality');
22 t.assert(casper.test.testEquals({1:{name:"bob",age:28}, 2:{name:"john",age:26}}, {1:{name:"bob",age:28}, 2:{name:"john",age:26}}), 'Tester.testEquals() complex object equality');
23 t.assertNot(casper.test.testEquals({1:{name:"bob",age:28}, 2:{name:"john",age:26}}, {1:{name:"bob",age:28}, 2:{name:"john",age:27}}), 'Tester.testEquals() complex object inequality');
24 t.assert(casper.test.testEquals(function(x){return x;}, function(x){return x;}), 'Tester.testEquals() function equality');
25 t.assertNot(casper.test.testEquals(function(x){return x;}, function(y){return y+2;}), 'Tester.testEquals() function inequality');
26
27 t.done();
......
1 (function(t) { 1 var utils = require('utils'), t = casper.test;
2 var utils = require('utils');
3 2
4 t.comment('fileExt()'); 3 t.comment('fileExt()');
5 (function() { 4 (function() {
6 var testCases = { 5 var testCases = {
7 'foo.ext': 'ext', 6 'foo.ext': 'ext',
8 'FOO.EXT': 'ext', 7 'FOO.EXT': 'ext',
9 'a.ext': 'ext', 8 'a.ext': 'ext',
10 '.ext': 'ext', 9 '.ext': 'ext',
11 'toto.': '', 10 'toto.': '',
12 ' plop.ext ': 'ext' 11 ' plop.ext ': 'ext'
13 }; 12 };
14 13
15 for (var testCase in testCases) { 14 for (var testCase in testCases) {
16 t.assertEquals(utils.fileExt(testCase), testCases[testCase], 'fileExt() extract file extension'); 15 t.assertEquals(utils.fileExt(testCase), testCases[testCase], 'fileExt() extract file extension');
17 } 16 }
18 })(); 17 })();
19 18
20 t.comment('fillBlanks()'); 19 t.comment('fillBlanks()');
21 (function() { 20 (function() {
22 testCases = { 21 testCases = {
23 'foo': 'foo ', 22 'foo': 'foo ',
24 ' foo bar ': ' foo bar ', 23 ' foo bar ': ' foo bar ',
25 ' foo bar ': ' foo bar ' 24 ' foo bar ': ' foo bar '
26 }; 25 };
27 26
28 for (var testCase in testCases) { 27 for (var testCase in testCases) {
29 t.assertEquals(utils.fillBlanks(testCase, 10), testCases[testCase], 'fillBlanks() fills blanks'); 28 t.assertEquals(utils.fillBlanks(testCase, 10), testCases[testCase], 'fillBlanks() fills blanks');
30 } 29 }
31 })(); 30 })();
32 31
33 t.comment('isClipRect()'); 32 t.comment('isClipRect()');
34 (function() { 33 (function() {
35 testCases = [ 34 testCases = [
36 [{}, false], 35 [{}, false],
37 [{top: 2}, false], 36 [{top: 2}, false],
38 [{top: 2, left: 2, width: 2, height: 2}, true], 37 [{top: 2, left: 2, width: 2, height: 2}, true],
39 [{top: 2, left: 2, height: 2, width: 2}, true], 38 [{top: 2, left: 2, height: 2, width: 2}, true],
40 [{top: 2, left: 2, width: 2, height: new Date()}, false] 39 [{top: 2, left: 2, width: 2, height: new Date()}, false]
41 ]; 40 ];
42 41
43 testCases.forEach(function(testCase) { 42 testCases.forEach(function(testCase) {
44 t.assertEquals(utils.isClipRect(testCase[0]), testCase[1], 'isClipRect() checks for a ClipRect'); 43 t.assertEquals(utils.isClipRect(testCase[0]), testCase[1], 'isClipRect() checks for a ClipRect');
45 }); 44 });
46 })(); 45 })();
47 46
48 t.comment('isJsFile()'); 47 t.comment('isJsFile()');
49 (function() { 48 (function() {
50 testCases = { 49 testCases = {
51 '': false, 50 '': false,
52 'toto.png': false, 51 'toto.png': false,
53 'plop': false, 52 'plop': false,
54 'gniii.coffee': true, 53 'gniii.coffee': true,
55 'script.js': true 54 'script.js': true
56 }; 55 };
57 56
58 for (var testCase in testCases) { 57 for (var testCase in testCases) {
59 t.assertEquals(utils.isJsFile(testCase), testCases[testCase], 'isJsFile() checks for js file'); 58 t.assertEquals(utils.isJsFile(testCase), testCases[testCase], 'isJsFile() checks for js file');
60 } 59 }
61 })(); 60 })();
62 61
63 t.comment('mergeObjects()'); 62 t.comment('mergeObjects()');
64 (function() { 63 (function() {
65 testCases = [ 64 testCases = [
66 { 65 {
67 obj1: {a: 1}, obj2: {b: 2}, merged: {a: 1, b: 2} 66 obj1: {a: 1}, obj2: {b: 2}, merged: {a: 1, b: 2}
68 }, 67 },
69 { 68 {
70 obj1: {}, obj2: {a: 1}, merged: {a: 1} 69 obj1: {}, obj2: {a: 1}, merged: {a: 1}
71 }, 70 },
72 { 71 {
73 obj1: {a: 1}, obj2: {}, merged: {a: 1} 72 obj1: {a: 1}, obj2: {}, merged: {a: 1}
74 }, 73 },
75 { 74 {
76 obj1: {a: 1}, obj2: {a: 2}, merged: {a: 2} 75 obj1: {a: 1}, obj2: {a: 2}, merged: {a: 2}
77 }, 76 },
78 { 77 {
79 obj1: {x: 0, double: function(){return this.x*2;}}, 78 obj1: {x: 0, double: function(){return this.x*2;}},
80 obj2: {triple: function(){return this.x*3;}}, 79 obj2: {triple: function(){return this.x*3;}},
81 merged: { 80 merged: {
82 x: 0, 81 x: 0,
83 double: function(){return this.x*2;}, 82 double: function(){return this.x*2;},
84 triple: function(){return this.x*3;} 83 triple: function(){return this.x*3;}
85 }
86 } 84 }
87 ]; 85 }
86 ];
88 87
89 testCases.forEach(function(testCase) { 88 testCases.forEach(function(testCase) {
90 t.assertEquals(utils.mergeObjects(testCase.obj1, testCase.obj2), testCase.merged, 'mergeObjects() can merge objects'); 89 t.assertEquals(utils.mergeObjects(testCase.obj1, testCase.obj2), testCase.merged, 'mergeObjects() can merge objects');
91 }); 90 });
92 })(); 91 })();
93 92
94 t.done(); 93 t.done();
95 })(casper.test);
......
1 (function(t) { 1 casper.test.comment('phantom.Casper.XUnitExporter');
2 t.comment('phantom.Casper.XUnitExporter');
3 2
4 xunit = require('xunit').create(); 3 xunit = require('xunit').create();
5 xunit.addSuccess('foo', 'bar'); 4 xunit.addSuccess('foo', 'bar');
6 t.assertMatch(xunit.getXML(), /<testcase classname="foo" name="bar"/, 'XUnitExporter.addSuccess() adds a successful testcase'); 5 casper.test.assertMatch(xunit.getXML(), /<testcase classname="foo" name="bar"/, 'XUnitExporter.addSuccess() adds a successful testcase');
7 xunit.addFailure('bar', 'baz', 'wrong', 'chucknorriz'); 6 xunit.addFailure('bar', 'baz', 'wrong', 'chucknorriz');
8 t.assertMatch(xunit.getXML(), /<testcase classname="bar" name="baz"><failure type="chucknorriz">wrong/, 'XUnitExporter.addFailure() adds a failed testcase'); 7 casper.test.assertMatch(xunit.getXML(), /<testcase classname="bar" name="baz"><failure type="chucknorriz">wrong/, 'XUnitExporter.addFailure() adds a failed testcase');
9 8
10 t.done(); 9 casper.test.done();
11 })(casper.test);
......