Mercurial > bugzilla-dashboard
annotate js/black-box.js @ 108:3ad618d3370f
refactored new Automator class into js/black-box.js.
author | Atul Varma <avarma@mozilla.com> |
---|---|
date | Fri, 30 Apr 2010 04:52:17 -0700 |
parents | aad1c0a17ba4 |
children | 8335b1abc295 |
rev | line source |
---|---|
108
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
1 function Automator(window, jQuery, onDone) { |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
2 this.jQuery = jQuery; |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
3 this.onDone = onDone; |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
4 this.queue = []; |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
5 this.window = window; |
103
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
6 } |
99
544d339d2b4c
Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
7 |
108
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
8 Automator.prototype = { |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
9 COMMAND_DELAY: 500, |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
10 queueNextCommand: function queueNextCommand() { |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
11 var self = this; |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
12 function nextCommand() { |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
13 var cmd = self.queue.shift(); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
14 cmd.call(self); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
15 self.queueNextCommand(); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
16 } |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
17 |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
18 if (this.queue.length) |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
19 this.window.setTimeout(nextCommand, this.COMMAND_DELAY); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
20 else |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
21 this.onDone(); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
22 }, |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
23 _$: function _$(sel) { |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
24 var query = this.jQuery(sel); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
25 if (query.length == 0) |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
26 throw new Error("selector yields no results: " + sel); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
27 if (query.length > 1) |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
28 throw new Error("selector yields " + query.length + |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
29 " results instead of 1: " + sel); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
30 return query; |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
31 }, |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
32 type: function type(field, value) { |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
33 this.queue.push(function() { this._$(field).val(value); }); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
34 }, |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
35 submit: function submit(form) { |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
36 this.queue.push(function() { this._$(form).submit(); }); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
37 } |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
38 }; |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
39 |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
40 function testLoginWithCorrectPassword(auto) { |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
41 auto.type("#login .username", "john@doe.com"); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
42 auto.type("#login .password", "test"); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
43 auto.submit("#login form"); |
103
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
44 } |
99
544d339d2b4c
Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
45 |
108
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
46 function testLoginWithNoPassword(auto) { |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
47 auto.type("#login .username", "john@doe.com"); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
48 auto.type("#login .password", ""); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
49 auto.submit("#login form"); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
50 } |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
51 |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
52 function testLoginWithIncorrectPassword(auto) { |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
53 auto.type("#login .username", "john@doe.com"); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
54 auto.type("#login .password", "u"); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
55 auto.submit("#login form"); |
103
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
56 } |
100
c486d35fad27
added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents:
99
diff
changeset
|
57 |
103
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
58 function setDashboardLoaded(delegate, window) { |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
59 window.onDashboardLoaded = function onDashboardLoaded(dashboard, options) { |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
60 $(dashboard).error( |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
61 function(event) { |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
62 if (window.console) |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
63 window.console.warn("An error occurred in the dashboard iframe."); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
64 }); |
100
c486d35fad27
added more mocks; black-box now talks to a really simple fake bugzilla 'server'.
Atul Varma <avarma@mozilla.com>
parents:
99
diff
changeset
|
65 |
103
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
66 delegate("blackBox.onDashboardLoaded", [dashboard, options]); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
67 |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
68 var require = Require.build(Require.modules, {window: window}); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
69 |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
70 var moduleExports = {}; |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
71 var dbrequire = dashboard.Require.build(dashboard.Require.modules, |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
72 moduleExports); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
73 |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
74 // Get rid of any form values cached by the browser. |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
75 options.jQuery("input[type=text], input[type=password]").val(""); |
101
106a0018e601
Get rid of any form values cached by the browser.
Atul Varma <avarma@mozilla.com>
parents:
100
diff
changeset
|
76 |
103
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
77 var ajaxImpl = require("mocks/bugzilla/trivial").makeAjaxImpl(); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
78 options.cache = require("mocks/cache").create(delegate); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
79 options.Bugzilla = require("mocks/bugzilla").create(options.Bugzilla, |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
80 ajaxImpl, |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
81 delegate); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
82 dbrequire("date-utils").now = function() { |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
83 return new Date("Tue Apr 27 2010 09:00:00 GMT"); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
84 }; |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
85 |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
86 delegate("blackBox.beforeInit", []); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
87 dbrequire("app/loader").init(moduleExports, options); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
88 delegate("blackBox.afterInit", []); |
99
544d339d2b4c
Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
89 }; |
103
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
90 } |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
91 |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
92 function resetDashboard(delegate) { |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
93 setDashboardLoaded(delegate, window); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
94 var iframe = $("#dashboard").get(0); |
a994fc89f341
added semi-automated system tests to black box.
Atul Varma <avarma@mozilla.com>
parents:
102
diff
changeset
|
95 iframe.src = "index.html?testing=1"; |
99
544d339d2b4c
Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
96 } |
544d339d2b4c
Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
97 |
106
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
98 function initialize() { |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
99 $(".test-button").click( |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
100 function() { |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
101 var testButton = this; |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
102 var testFunc = window[testButton.id]; |
108
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
103 var auto; |
106
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
104 |
108
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
105 $(testButton).addClass("running"); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
106 function onDone() { |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
107 $(testButton).removeClass("running"); |
106
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
108 } |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
109 |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
110 resetDashboard( |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
111 function(method, args) { |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
112 switch (method) { |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
113 case "blackBox.onDashboardLoaded": |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
114 var dashboard = args[0]; |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
115 var options = args[1]; |
108
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
116 auto = new Automator(window, options.jQuery, onDone); |
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
117 testFunc(auto); |
106
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
118 break; |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
119 case "blackBox.afterInit": |
108
3ad618d3370f
refactored new Automator class into js/black-box.js.
Atul Varma <avarma@mozilla.com>
parents:
106
diff
changeset
|
120 auto.queueNextCommand(); |
106
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
121 break; |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
122 } |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
123 }); |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
124 }); |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
125 |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
126 resetDashboard(function() {}); |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
127 } |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
128 |
99
544d339d2b4c
Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
129 $(window).ready( |
544d339d2b4c
Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
130 function() { |
106
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
131 if (!('JSON' in window)) |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
132 Require.preload(document, ["js/json2.js"], initialize); |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
133 else |
aad1c0a17ba4
added JSON support for iphone.
Atul Varma <avarma@mozilla.com>
parents:
103
diff
changeset
|
134 initialize(); |
99
544d339d2b4c
Added the beginnings of a black-box app that can be used to generate/run functional tests.
Atul Varma <avarma@mozilla.com>
parents:
diff
changeset
|
135 }); |