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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 });