UNPKG

40.6 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/cdk/testing'), require('protractor')) :
3 typeof define === 'function' && define.amd ? define('@angular/cdk/testing/protractor', ['exports', '@angular/cdk/testing', 'protractor'], factory) :
4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ng = global.ng || {}, global.ng.cdk = global.ng.cdk || {}, global.ng.cdk.testing = global.ng.cdk.testing || {}, global.ng.cdk.testing.protractor = {}), global.ng.cdk.testing, global.protractor));
5}(this, (function (exports, testing, protractor) { 'use strict';
6
7 /*! *****************************************************************************
8 Copyright (c) Microsoft Corporation.
9
10 Permission to use, copy, modify, and/or distribute this software for any
11 purpose with or without fee is hereby granted.
12
13 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
14 REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
15 AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
16 INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
17 LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
18 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 PERFORMANCE OF THIS SOFTWARE.
20 ***************************************************************************** */
21 /* global Reflect, Promise */
22 var extendStatics = function (d, b) {
23 extendStatics = Object.setPrototypeOf ||
24 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
25 function (d, b) { for (var p in b)
26 if (Object.prototype.hasOwnProperty.call(b, p))
27 d[p] = b[p]; };
28 return extendStatics(d, b);
29 };
30 function __extends(d, b) {
31 if (typeof b !== "function" && b !== null)
32 throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
33 extendStatics(d, b);
34 function __() { this.constructor = d; }
35 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
36 }
37 var __assign = function () {
38 __assign = Object.assign || function __assign(t) {
39 for (var s, i = 1, n = arguments.length; i < n; i++) {
40 s = arguments[i];
41 for (var p in s)
42 if (Object.prototype.hasOwnProperty.call(s, p))
43 t[p] = s[p];
44 }
45 return t;
46 };
47 return __assign.apply(this, arguments);
48 };
49 function __rest(s, e) {
50 var t = {};
51 for (var p in s)
52 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
53 t[p] = s[p];
54 if (s != null && typeof Object.getOwnPropertySymbols === "function")
55 for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
56 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
57 t[p[i]] = s[p[i]];
58 }
59 return t;
60 }
61 function __decorate(decorators, target, key, desc) {
62 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
63 if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
64 r = Reflect.decorate(decorators, target, key, desc);
65 else
66 for (var i = decorators.length - 1; i >= 0; i--)
67 if (d = decorators[i])
68 r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
69 return c > 3 && r && Object.defineProperty(target, key, r), r;
70 }
71 function __param(paramIndex, decorator) {
72 return function (target, key) { decorator(target, key, paramIndex); };
73 }
74 function __metadata(metadataKey, metadataValue) {
75 if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
76 return Reflect.metadata(metadataKey, metadataValue);
77 }
78 function __awaiter(thisArg, _arguments, P, generator) {
79 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
80 return new (P || (P = Promise))(function (resolve, reject) {
81 function fulfilled(value) { try {
82 step(generator.next(value));
83 }
84 catch (e) {
85 reject(e);
86 } }
87 function rejected(value) { try {
88 step(generator["throw"](value));
89 }
90 catch (e) {
91 reject(e);
92 } }
93 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
94 step((generator = generator.apply(thisArg, _arguments || [])).next());
95 });
96 }
97 function __generator(thisArg, body) {
98 var _ = { label: 0, sent: function () { if (t[0] & 1)
99 throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
100 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
101 function verb(n) { return function (v) { return step([n, v]); }; }
102 function step(op) {
103 if (f)
104 throw new TypeError("Generator is already executing.");
105 while (_)
106 try {
107 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
108 return t;
109 if (y = 0, t)
110 op = [op[0] & 2, t.value];
111 switch (op[0]) {
112 case 0:
113 case 1:
114 t = op;
115 break;
116 case 4:
117 _.label++;
118 return { value: op[1], done: false };
119 case 5:
120 _.label++;
121 y = op[1];
122 op = [0];
123 continue;
124 case 7:
125 op = _.ops.pop();
126 _.trys.pop();
127 continue;
128 default:
129 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
130 _ = 0;
131 continue;
132 }
133 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
134 _.label = op[1];
135 break;
136 }
137 if (op[0] === 6 && _.label < t[1]) {
138 _.label = t[1];
139 t = op;
140 break;
141 }
142 if (t && _.label < t[2]) {
143 _.label = t[2];
144 _.ops.push(op);
145 break;
146 }
147 if (t[2])
148 _.ops.pop();
149 _.trys.pop();
150 continue;
151 }
152 op = body.call(thisArg, _);
153 }
154 catch (e) {
155 op = [6, e];
156 y = 0;
157 }
158 finally {
159 f = t = 0;
160 }
161 if (op[0] & 5)
162 throw op[1];
163 return { value: op[0] ? op[1] : void 0, done: true };
164 }
165 }
166 var __createBinding = Object.create ? (function (o, m, k, k2) {
167 if (k2 === undefined)
168 k2 = k;
169 Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
170 }) : (function (o, m, k, k2) {
171 if (k2 === undefined)
172 k2 = k;
173 o[k2] = m[k];
174 });
175 function __exportStar(m, o) {
176 for (var p in m)
177 if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
178 __createBinding(o, m, p);
179 }
180 function __values(o) {
181 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
182 if (m)
183 return m.call(o);
184 if (o && typeof o.length === "number")
185 return {
186 next: function () {
187 if (o && i >= o.length)
188 o = void 0;
189 return { value: o && o[i++], done: !o };
190 }
191 };
192 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
193 }
194 function __read(o, n) {
195 var m = typeof Symbol === "function" && o[Symbol.iterator];
196 if (!m)
197 return o;
198 var i = m.call(o), r, ar = [], e;
199 try {
200 while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
201 ar.push(r.value);
202 }
203 catch (error) {
204 e = { error: error };
205 }
206 finally {
207 try {
208 if (r && !r.done && (m = i["return"]))
209 m.call(i);
210 }
211 finally {
212 if (e)
213 throw e.error;
214 }
215 }
216 return ar;
217 }
218 /** @deprecated */
219 function __spread() {
220 for (var ar = [], i = 0; i < arguments.length; i++)
221 ar = ar.concat(__read(arguments[i]));
222 return ar;
223 }
224 /** @deprecated */
225 function __spreadArrays() {
226 for (var s = 0, i = 0, il = arguments.length; i < il; i++)
227 s += arguments[i].length;
228 for (var r = Array(s), k = 0, i = 0; i < il; i++)
229 for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
230 r[k] = a[j];
231 return r;
232 }
233 function __spreadArray(to, from, pack) {
234 if (pack || arguments.length === 2)
235 for (var i = 0, l = from.length, ar; i < l; i++) {
236 if (ar || !(i in from)) {
237 if (!ar)
238 ar = Array.prototype.slice.call(from, 0, i);
239 ar[i] = from[i];
240 }
241 }
242 return to.concat(ar || from);
243 }
244 function __await(v) {
245 return this instanceof __await ? (this.v = v, this) : new __await(v);
246 }
247 function __asyncGenerator(thisArg, _arguments, generator) {
248 if (!Symbol.asyncIterator)
249 throw new TypeError("Symbol.asyncIterator is not defined.");
250 var g = generator.apply(thisArg, _arguments || []), i, q = [];
251 return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
252 function verb(n) { if (g[n])
253 i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
254 function resume(n, v) { try {
255 step(g[n](v));
256 }
257 catch (e) {
258 settle(q[0][3], e);
259 } }
260 function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
261 function fulfill(value) { resume("next", value); }
262 function reject(value) { resume("throw", value); }
263 function settle(f, v) { if (f(v), q.shift(), q.length)
264 resume(q[0][0], q[0][1]); }
265 }
266 function __asyncDelegator(o) {
267 var i, p;
268 return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
269 function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
270 }
271 function __asyncValues(o) {
272 if (!Symbol.asyncIterator)
273 throw new TypeError("Symbol.asyncIterator is not defined.");
274 var m = o[Symbol.asyncIterator], i;
275 return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
276 function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
277 function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
278 }
279 function __makeTemplateObject(cooked, raw) {
280 if (Object.defineProperty) {
281 Object.defineProperty(cooked, "raw", { value: raw });
282 }
283 else {
284 cooked.raw = raw;
285 }
286 return cooked;
287 }
288 ;
289 var __setModuleDefault = Object.create ? (function (o, v) {
290 Object.defineProperty(o, "default", { enumerable: true, value: v });
291 }) : function (o, v) {
292 o["default"] = v;
293 };
294 function __importStar(mod) {
295 if (mod && mod.__esModule)
296 return mod;
297 var result = {};
298 if (mod != null)
299 for (var k in mod)
300 if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
301 __createBinding(result, mod, k);
302 __setModuleDefault(result, mod);
303 return result;
304 }
305 function __importDefault(mod) {
306 return (mod && mod.__esModule) ? mod : { default: mod };
307 }
308 function __classPrivateFieldGet(receiver, state, kind, f) {
309 if (kind === "a" && !f)
310 throw new TypeError("Private accessor was defined without a getter");
311 if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
312 throw new TypeError("Cannot read private member from an object whose class did not declare it");
313 return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
314 }
315 function __classPrivateFieldSet(receiver, state, value, kind, f) {
316 if (kind === "m")
317 throw new TypeError("Private method is not writable");
318 if (kind === "a" && !f)
319 throw new TypeError("Private accessor was defined without a setter");
320 if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
321 throw new TypeError("Cannot write private member to an object whose class did not declare it");
322 return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
323 }
324
325 var _a;
326 /** Maps the `TestKey` constants to Protractor's `Key` constants. */
327 var keyMap = (_a = {},
328 _a[testing.TestKey.BACKSPACE] = protractor.Key.BACK_SPACE,
329 _a[testing.TestKey.TAB] = protractor.Key.TAB,
330 _a[testing.TestKey.ENTER] = protractor.Key.ENTER,
331 _a[testing.TestKey.SHIFT] = protractor.Key.SHIFT,
332 _a[testing.TestKey.CONTROL] = protractor.Key.CONTROL,
333 _a[testing.TestKey.ALT] = protractor.Key.ALT,
334 _a[testing.TestKey.ESCAPE] = protractor.Key.ESCAPE,
335 _a[testing.TestKey.PAGE_UP] = protractor.Key.PAGE_UP,
336 _a[testing.TestKey.PAGE_DOWN] = protractor.Key.PAGE_DOWN,
337 _a[testing.TestKey.END] = protractor.Key.END,
338 _a[testing.TestKey.HOME] = protractor.Key.HOME,
339 _a[testing.TestKey.LEFT_ARROW] = protractor.Key.ARROW_LEFT,
340 _a[testing.TestKey.UP_ARROW] = protractor.Key.ARROW_UP,
341 _a[testing.TestKey.RIGHT_ARROW] = protractor.Key.ARROW_RIGHT,
342 _a[testing.TestKey.DOWN_ARROW] = protractor.Key.ARROW_DOWN,
343 _a[testing.TestKey.INSERT] = protractor.Key.INSERT,
344 _a[testing.TestKey.DELETE] = protractor.Key.DELETE,
345 _a[testing.TestKey.F1] = protractor.Key.F1,
346 _a[testing.TestKey.F2] = protractor.Key.F2,
347 _a[testing.TestKey.F3] = protractor.Key.F3,
348 _a[testing.TestKey.F4] = protractor.Key.F4,
349 _a[testing.TestKey.F5] = protractor.Key.F5,
350 _a[testing.TestKey.F6] = protractor.Key.F6,
351 _a[testing.TestKey.F7] = protractor.Key.F7,
352 _a[testing.TestKey.F8] = protractor.Key.F8,
353 _a[testing.TestKey.F9] = protractor.Key.F9,
354 _a[testing.TestKey.F10] = protractor.Key.F10,
355 _a[testing.TestKey.F11] = protractor.Key.F11,
356 _a[testing.TestKey.F12] = protractor.Key.F12,
357 _a[testing.TestKey.META] = protractor.Key.META,
358 _a);
359 /** Converts a `ModifierKeys` object to a list of Protractor `Key`s. */
360 function toProtractorModifierKeys(modifiers) {
361 var result = [];
362 if (modifiers.control) {
363 result.push(protractor.Key.CONTROL);
364 }
365 if (modifiers.alt) {
366 result.push(protractor.Key.ALT);
367 }
368 if (modifiers.shift) {
369 result.push(protractor.Key.SHIFT);
370 }
371 if (modifiers.meta) {
372 result.push(protractor.Key.META);
373 }
374 return result;
375 }
376 /**
377 * A `TestElement` implementation for Protractor.
378 * @deprecated
379 * @breaking-change 13.0.0
380 */
381 var ProtractorElement = /** @class */ (function () {
382 function ProtractorElement(element) {
383 this.element = element;
384 }
385 /** Blur the element. */
386 ProtractorElement.prototype.blur = function () {
387 return __awaiter(this, void 0, void 0, function () {
388 return __generator(this, function (_a) {
389 return [2 /*return*/, protractor.browser.executeScript('arguments[0].blur()', this.element)];
390 });
391 });
392 };
393 /** Clear the element's input (for input and textarea elements only). */
394 ProtractorElement.prototype.clear = function () {
395 return __awaiter(this, void 0, void 0, function () {
396 return __generator(this, function (_a) {
397 return [2 /*return*/, this.element.clear()];
398 });
399 });
400 };
401 ProtractorElement.prototype.click = function () {
402 var args = [];
403 for (var _i = 0; _i < arguments.length; _i++) {
404 args[_i] = arguments[_i];
405 }
406 return __awaiter(this, void 0, void 0, function () {
407 return __generator(this, function (_a) {
408 switch (_a.label) {
409 case 0: return [4 /*yield*/, this._dispatchClickEventSequence(args, protractor.Button.LEFT)];
410 case 1:
411 _a.sent();
412 return [2 /*return*/];
413 }
414 });
415 });
416 };
417 ProtractorElement.prototype.rightClick = function () {
418 var args = [];
419 for (var _i = 0; _i < arguments.length; _i++) {
420 args[_i] = arguments[_i];
421 }
422 return __awaiter(this, void 0, void 0, function () {
423 return __generator(this, function (_a) {
424 switch (_a.label) {
425 case 0: return [4 /*yield*/, this._dispatchClickEventSequence(args, protractor.Button.RIGHT)];
426 case 1:
427 _a.sent();
428 return [2 /*return*/];
429 }
430 });
431 });
432 };
433 /** Focus the element. */
434 ProtractorElement.prototype.focus = function () {
435 return __awaiter(this, void 0, void 0, function () {
436 return __generator(this, function (_a) {
437 return [2 /*return*/, protractor.browser.executeScript('arguments[0].focus()', this.element)];
438 });
439 });
440 };
441 /** Get the computed value of the given CSS property for the element. */
442 ProtractorElement.prototype.getCssValue = function (property) {
443 return __awaiter(this, void 0, void 0, function () {
444 return __generator(this, function (_a) {
445 return [2 /*return*/, this.element.getCssValue(property)];
446 });
447 });
448 };
449 /** Hovers the mouse over the element. */
450 ProtractorElement.prototype.hover = function () {
451 return __awaiter(this, void 0, void 0, function () {
452 var _a, _b;
453 return __generator(this, function (_c) {
454 switch (_c.label) {
455 case 0:
456 _b = (_a = protractor.browser.actions())
457 .mouseMove;
458 return [4 /*yield*/, this.element.getWebElement()];
459 case 1: return [2 /*return*/, _b.apply(_a, [_c.sent()])
460 .perform()];
461 }
462 });
463 });
464 };
465 /** Moves the mouse away from the element. */
466 ProtractorElement.prototype.mouseAway = function () {
467 return __awaiter(this, void 0, void 0, function () {
468 var _a, _b;
469 return __generator(this, function (_c) {
470 switch (_c.label) {
471 case 0:
472 _b = (_a = protractor.browser.actions())
473 .mouseMove;
474 return [4 /*yield*/, this.element.getWebElement()];
475 case 1: return [2 /*return*/, _b.apply(_a, [_c.sent(), { x: -1, y: -1 }])
476 .perform()];
477 }
478 });
479 });
480 };
481 ProtractorElement.prototype.sendKeys = function () {
482 var modifiersAndKeys = [];
483 for (var _i = 0; _i < arguments.length; _i++) {
484 modifiersAndKeys[_i] = arguments[_i];
485 }
486 return __awaiter(this, void 0, void 0, function () {
487 var first, modifiers, rest, modifierKeys, keys;
488 var _a;
489 return __generator(this, function (_b) {
490 first = modifiersAndKeys[0];
491 if (typeof first !== 'string' && typeof first !== 'number') {
492 modifiers = first;
493 rest = modifiersAndKeys.slice(1);
494 }
495 else {
496 modifiers = {};
497 rest = modifiersAndKeys;
498 }
499 modifierKeys = toProtractorModifierKeys(modifiers);
500 keys = rest.map(function (k) { return typeof k === 'string' ? k.split('') : [keyMap[k]]; })
501 .reduce(function (arr, k) { return arr.concat(k); }, [])
502 // Key.chord doesn't work well with geckodriver (mozilla/geckodriver#1502),
503 // so avoid it if no modifier keys are required.
504 .map(function (k) { return modifierKeys.length > 0 ? protractor.Key.chord.apply(protractor.Key, __spreadArray(__spreadArray([], __read(modifierKeys)), [k])) : k; });
505 return [2 /*return*/, (_a = this.element).sendKeys.apply(_a, __spreadArray([], __read(keys)))];
506 });
507 });
508 };
509 /**
510 * Gets the text from the element.
511 * @param options Options that affect what text is included.
512 */
513 ProtractorElement.prototype.text = function (options) {
514 return __awaiter(this, void 0, void 0, function () {
515 return __generator(this, function (_a) {
516 if (options === null || options === void 0 ? void 0 : options.exclude) {
517 return [2 /*return*/, protractor.browser.executeScript(testing._getTextWithExcludedElements, this.element, options.exclude)];
518 }
519 // We don't go through Protractor's `getText`, because it excludes text from hidden elements.
520 return [2 /*return*/, protractor.browser.executeScript("return (arguments[0].textContent || '').trim()", this.element)];
521 });
522 });
523 };
524 /** Gets the value for the given attribute from the element. */
525 ProtractorElement.prototype.getAttribute = function (name) {
526 return __awaiter(this, void 0, void 0, function () {
527 return __generator(this, function (_a) {
528 return [2 /*return*/, protractor.browser.executeScript("return arguments[0].getAttribute(arguments[1])", this.element, name)];
529 });
530 });
531 };
532 /** Checks whether the element has the given class. */
533 ProtractorElement.prototype.hasClass = function (name) {
534 return __awaiter(this, void 0, void 0, function () {
535 var classes;
536 return __generator(this, function (_a) {
537 switch (_a.label) {
538 case 0: return [4 /*yield*/, this.getAttribute('class')];
539 case 1:
540 classes = (_a.sent()) || '';
541 return [2 /*return*/, new Set(classes.split(/\s+/).filter(function (c) { return c; })).has(name)];
542 }
543 });
544 });
545 };
546 /** Gets the dimensions of the element. */
547 ProtractorElement.prototype.getDimensions = function () {
548 return __awaiter(this, void 0, void 0, function () {
549 var _a, width, height, _b, left, top;
550 return __generator(this, function (_c) {
551 switch (_c.label) {
552 case 0: return [4 /*yield*/, this.element.getSize()];
553 case 1:
554 _a = _c.sent(), width = _a.width, height = _a.height;
555 return [4 /*yield*/, this.element.getLocation()];
556 case 2:
557 _b = _c.sent(), left = _b.x, top = _b.y;
558 return [2 /*return*/, { width: width, height: height, left: left, top: top }];
559 }
560 });
561 });
562 };
563 /** Gets the value of a property of an element. */
564 ProtractorElement.prototype.getProperty = function (name) {
565 return __awaiter(this, void 0, void 0, function () {
566 return __generator(this, function (_a) {
567 return [2 /*return*/, protractor.browser.executeScript("return arguments[0][arguments[1]]", this.element, name)];
568 });
569 });
570 };
571 /** Sets the value of a property of an input. */
572 ProtractorElement.prototype.setInputValue = function (value) {
573 return __awaiter(this, void 0, void 0, function () {
574 return __generator(this, function (_a) {
575 return [2 /*return*/, protractor.browser.executeScript("arguments[0].value = arguments[1]", this.element, value)];
576 });
577 });
578 };
579 /** Selects the options at the specified indexes inside of a native `select` element. */
580 ProtractorElement.prototype.selectOptions = function () {
581 var optionIndexes = [];
582 for (var _i = 0; _i < arguments.length; _i++) {
583 optionIndexes[_i] = arguments[_i];
584 }
585 return __awaiter(this, void 0, void 0, function () {
586 var options, indexes, i;
587 return __generator(this, function (_a) {
588 switch (_a.label) {
589 case 0: return [4 /*yield*/, this.element.all(protractor.by.css('option'))];
590 case 1:
591 options = _a.sent();
592 indexes = new Set(optionIndexes);
593 if (!(options.length && indexes.size)) return [3 /*break*/, 8];
594 // Reset the value so all the selected states are cleared. We can
595 // reuse the input-specific method since the logic is the same.
596 return [4 /*yield*/, this.setInputValue('')];
597 case 2:
598 // Reset the value so all the selected states are cleared. We can
599 // reuse the input-specific method since the logic is the same.
600 _a.sent();
601 i = 0;
602 _a.label = 3;
603 case 3:
604 if (!(i < options.length)) return [3 /*break*/, 8];
605 if (!indexes.has(i)) return [3 /*break*/, 7];
606 // We have to hold the control key while clicking on options so that multiple can be
607 // selected in multi-selection mode. The key doesn't do anything for single selection.
608 return [4 /*yield*/, protractor.browser.actions().keyDown(protractor.Key.CONTROL).perform()];
609 case 4:
610 // We have to hold the control key while clicking on options so that multiple can be
611 // selected in multi-selection mode. The key doesn't do anything for single selection.
612 _a.sent();
613 return [4 /*yield*/, options[i].click()];
614 case 5:
615 _a.sent();
616 return [4 /*yield*/, protractor.browser.actions().keyUp(protractor.Key.CONTROL).perform()];
617 case 6:
618 _a.sent();
619 _a.label = 7;
620 case 7:
621 i++;
622 return [3 /*break*/, 3];
623 case 8: return [2 /*return*/];
624 }
625 });
626 });
627 };
628 /** Checks whether this element matches the given selector. */
629 ProtractorElement.prototype.matchesSelector = function (selector) {
630 return __awaiter(this, void 0, void 0, function () {
631 return __generator(this, function (_a) {
632 return [2 /*return*/, protractor.browser.executeScript("\n return (Element.prototype.matches ||\n Element.prototype.msMatchesSelector).call(arguments[0], arguments[1])\n ", this.element, selector)];
633 });
634 });
635 };
636 /** Checks whether the element is focused. */
637 ProtractorElement.prototype.isFocused = function () {
638 return __awaiter(this, void 0, void 0, function () {
639 return __generator(this, function (_a) {
640 return [2 /*return*/, this.element.equals(protractor.browser.driver.switchTo().activeElement())];
641 });
642 });
643 };
644 /**
645 * Dispatches an event with a particular name.
646 * @param name Name of the event to be dispatched.
647 */
648 ProtractorElement.prototype.dispatchEvent = function (name, data) {
649 return __awaiter(this, void 0, void 0, function () {
650 return __generator(this, function (_a) {
651 return [2 /*return*/, protractor.browser.executeScript(_dispatchEvent, name, this.element, data)];
652 });
653 });
654 };
655 /** Dispatches all the events that are part of a click event sequence. */
656 ProtractorElement.prototype._dispatchClickEventSequence = function (args, button) {
657 return __awaiter(this, void 0, void 0, function () {
658 var modifiers, modifierKeys, offsetArgs, actions, _a, _b, _c, modifierKeys_1, modifierKeys_1_1, modifierKey, modifierKeys_2, modifierKeys_2_1, modifierKey;
659 var _d, e_1, _e, e_2, _f;
660 return __generator(this, function (_g) {
661 switch (_g.label) {
662 case 0:
663 modifiers = {};
664 if (args.length && typeof args[args.length - 1] === 'object') {
665 modifiers = args.pop();
666 }
667 modifierKeys = toProtractorModifierKeys(modifiers);
668 offsetArgs = (args.length === 2 ?
669 [{ x: args[0], y: args[1] }] : []);
670 _b = (_a = (_d = protractor.browser.actions())
671 .mouseMove).apply;
672 _c = [_d];
673 return [4 /*yield*/, this.element.getWebElement()];
674 case 1:
675 actions = _b.apply(_a, _c.concat([__spreadArray.apply(void 0, [[_g.sent()], __read(offsetArgs)])]));
676 try {
677 for (modifierKeys_1 = __values(modifierKeys), modifierKeys_1_1 = modifierKeys_1.next(); !modifierKeys_1_1.done; modifierKeys_1_1 = modifierKeys_1.next()) {
678 modifierKey = modifierKeys_1_1.value;
679 actions = actions.keyDown(modifierKey);
680 }
681 }
682 catch (e_1_1) { e_1 = { error: e_1_1 }; }
683 finally {
684 try {
685 if (modifierKeys_1_1 && !modifierKeys_1_1.done && (_e = modifierKeys_1.return)) _e.call(modifierKeys_1);
686 }
687 finally { if (e_1) throw e_1.error; }
688 }
689 actions = actions.click(button);
690 try {
691 for (modifierKeys_2 = __values(modifierKeys), modifierKeys_2_1 = modifierKeys_2.next(); !modifierKeys_2_1.done; modifierKeys_2_1 = modifierKeys_2.next()) {
692 modifierKey = modifierKeys_2_1.value;
693 actions = actions.keyUp(modifierKey);
694 }
695 }
696 catch (e_2_1) { e_2 = { error: e_2_1 }; }
697 finally {
698 try {
699 if (modifierKeys_2_1 && !modifierKeys_2_1.done && (_f = modifierKeys_2.return)) _f.call(modifierKeys_2);
700 }
701 finally { if (e_2) throw e_2.error; }
702 }
703 return [4 /*yield*/, actions.perform()];
704 case 2:
705 _g.sent();
706 return [2 /*return*/];
707 }
708 });
709 });
710 };
711 return ProtractorElement;
712 }());
713 /**
714 * Dispatches an event with a particular name and data to an element.
715 * Note that this needs to be a pure function, because it gets stringified by
716 * Protractor and is executed inside the browser.
717 */
718 function _dispatchEvent(name, element, data) {
719 var event = document.createEvent('Event');
720 event.initEvent(name);
721 if (data) {
722 // tslint:disable-next-line:ban Have to use `Object.assign` to preserve the original object.
723 Object.assign(event, data);
724 }
725 // This type has a string index signature, so we cannot access it using a dotted property access.
726 element['dispatchEvent'](event);
727 }
728
729 /** The default environment options. */
730 var defaultEnvironmentOptions = {
731 queryFn: function (selector, root) { return root.all(protractor.by.css(selector)); }
732 };
733 /**
734 * A `HarnessEnvironment` implementation for Protractor.
735 * @deprecated
736 * @breaking-change 13.0.0
737 */
738 var ProtractorHarnessEnvironment = /** @class */ (function (_super) {
739 __extends(ProtractorHarnessEnvironment, _super);
740 function ProtractorHarnessEnvironment(rawRootElement, options) {
741 var _this = _super.call(this, rawRootElement) || this;
742 _this._options = Object.assign(Object.assign({}, defaultEnvironmentOptions), options);
743 return _this;
744 }
745 /** Creates a `HarnessLoader` rooted at the document root. */
746 ProtractorHarnessEnvironment.loader = function (options) {
747 return new ProtractorHarnessEnvironment(protractor.element(protractor.by.css('body')), options);
748 };
749 /** Gets the ElementFinder corresponding to the given TestElement. */
750 ProtractorHarnessEnvironment.getNativeElement = function (el) {
751 if (el instanceof ProtractorElement) {
752 return el.element;
753 }
754 throw Error('This TestElement was not created by the ProtractorHarnessEnvironment');
755 };
756 /**
757 * Flushes change detection and async tasks captured in the Angular zone.
758 * In most cases it should not be necessary to call this manually. However, there may be some edge
759 * cases where it is needed to fully flush animation events.
760 */
761 ProtractorHarnessEnvironment.prototype.forceStabilize = function () {
762 return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
763 return [2 /*return*/];
764 }); });
765 };
766 /** @docs-private */
767 ProtractorHarnessEnvironment.prototype.waitForTasksOutsideAngular = function () {
768 return __awaiter(this, void 0, void 0, function () {
769 return __generator(this, function (_a) {
770 return [2 /*return*/];
771 });
772 });
773 };
774 /** Gets the root element for the document. */
775 ProtractorHarnessEnvironment.prototype.getDocumentRoot = function () {
776 return protractor.element(protractor.by.css('body'));
777 };
778 /** Creates a `TestElement` from a raw element. */
779 ProtractorHarnessEnvironment.prototype.createTestElement = function (element) {
780 return new ProtractorElement(element);
781 };
782 /** Creates a `HarnessLoader` rooted at the given raw element. */
783 ProtractorHarnessEnvironment.prototype.createEnvironment = function (element) {
784 return new ProtractorHarnessEnvironment(element, this._options);
785 };
786 /**
787 * Gets a list of all elements matching the given selector under this environment's root element.
788 */
789 ProtractorHarnessEnvironment.prototype.getAllRawElements = function (selector) {
790 return __awaiter(this, void 0, void 0, function () {
791 var elementArrayFinder, length, elements, i;
792 return __generator(this, function (_a) {
793 switch (_a.label) {
794 case 0:
795 elementArrayFinder = this._options.queryFn(selector, this.rawRootElement);
796 return [4 /*yield*/, elementArrayFinder.count()];
797 case 1:
798 length = _a.sent();
799 elements = [];
800 for (i = 0; i < length; i++) {
801 elements.push(elementArrayFinder.get(i));
802 }
803 return [2 /*return*/, elements];
804 }
805 });
806 });
807 };
808 return ProtractorHarnessEnvironment;
809 }(testing.HarnessEnvironment));
810
811 /**
812 * @license
813 * Copyright Google LLC All Rights Reserved.
814 *
815 * Use of this source code is governed by an MIT-style license that can be
816 * found in the LICENSE file at https://angular.io/license
817 */
818
819 /**
820 * @license
821 * Copyright Google LLC All Rights Reserved.
822 *
823 * Use of this source code is governed by an MIT-style license that can be
824 * found in the LICENSE file at https://angular.io/license
825 */
826
827 exports.ProtractorElement = ProtractorElement;
828 exports.ProtractorHarnessEnvironment = ProtractorHarnessEnvironment;
829
830 Object.defineProperty(exports, '__esModule', { value: true });
831
832})));
833//# sourceMappingURL=cdk-testing-protractor.umd.js.map