How to use getActiveElement method in Playwright Internal

Best JavaScript code snippet using playwright-internal

ListTests.js

Source:ListTests.js Github

copy

Full Screen

...232 [],233 intern.config.WAIT_TIMEOUT,234 intern.config.POLL_INTERVAL))235 .pressKeys(keys.TAB) // Press TAB236 .getActiveElement()237 .getVisibleText()238 .then(function (value) {239 assert.strictEqual(value, "Programmatic item of order 0\nlist-prog-1");240 })241 .end()242 .pressKeys(keys.ARROW_DOWN) // Press DOWN ARROW243 .getActiveElement()244 .getVisibleText()245 .then(function (value) {246 assert.strictEqual(value, "Programmatic item of order 1\nlist-prog-1");247 })248 .end()249 .pressKeys(keys.ARROW_DOWN) // Press DOWN ARROW250 .getActiveElement()251 .getVisibleText()252 .then(function (value) {253 assert.strictEqual(value, "Programmatic item of order 2\nlist-prog-1");254 })255 .end()256 .pressKeys(keys.ARROW_RIGHT) // Press RIGHT ARROW257 .getActiveElement()258 .getVisibleText()259 .then(function (value) {260 assert.strictEqual(value, "Programmatic item of order 2\nlist-prog-1");261 })262 .end()263 .pressKeys(keys.ENTER) // Press ENTER264 .getActiveElement()265 .getVisibleText()266 .then(function (value) {267 assert.strictEqual(value, "Programmatic item of order 2\nlist-prog-1");268 })269 .end()270 .pressKeys(keys.ARROW_UP) // Press UP ARROW271 .getActiveElement()272 .getVisibleText()273 .then(function (value) {274 assert.strictEqual(value, "Programmatic item of order 1\nlist-prog-1");275 })276 .end()277 .pressKeys(keys.TAB) // Press TAB278 .pressKeys(keys.SHIFT + keys.TAB) // Press Shift + TAB279 .pressKeys(keys.SHIFT) // release shift280 .getActiveElement()281 .getVisibleText()282 .then(function (value) {283 assert.strictEqual(value, "Programmatic item of order 1\nlist-prog-1");284 })285 .end()286 .pressKeys(keys.F2) // Press F2287 .getActiveElement()288 .getVisibleText()289 .then(function (value) {290 assert.strictEqual(value, "Programmatic item of order 1\nlist-prog-1");291 })292 .end()293 .pressKeys(keys.PAGE_DOWN) // Press PAGE DOWN294 .getActiveElement()295 .getVisibleText()296 .then(function (value) {297 assert.strictEqual(value, "Programmatic item of order 99\nlist-prog-1");298 })299 .end()300 .pressKeys(keys.HOME) // Press HOME301 .getActiveElement()302 .getVisibleText()303 .then(function (value) {304 assert.strictEqual(value, "Programmatic item of order 0\nlist-prog-1");305 })306 .end()307 .pressKeys(keys.END) // Press END308 .getActiveElement()309 .getVisibleText()310 .then(function (value) {311 assert.strictEqual(value, "Programmatic item of order 99\nlist-prog-1");312 })313 .end();314 },315 "keyboard navigation with custom renderers": function () {316 var remote = this.remote;317 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {318 return this.skip("no keyboard support");319 }320 if (remote.environmentType.browserName.toLowerCase() === "internet explorer") {321 // Since evt.shiftKey not set (webdriver bug), Shift-TAB is getting treated like a normal TAB,322 // and we go to an unexpected element, leading to a test failure. Shift-TAB works when manually323 // tested though, and Shift-TAB works in some other Intern tests too. Strange.324 return this.skip("shift-tab getting treated as normal tab, spurious test failure");325 }326 return remote327 .get("deliteful/tests/functional/list/list-cust-2.html")328 .then(pollUntil("return ('ready' in window && ready "329 + "&& document.getElementById('list-cust-2') "330 + "&& !document.querySelector('#list-cust-2 .d-list-container')"331 + ".getAttribute('aria-busy') === false) ? true : null;",332 [],333 intern.config.WAIT_TIMEOUT,334 intern.config.POLL_INTERVAL))335 .pressKeys(keys.TAB) // Press TAB336 .getActiveElement()337 .getVisibleText()338 .then(function (value) {339 assert.strictEqual(value, "Amazon\nhttp://www.amazon.com", "keystroke 1");340 })341 .end()342 .pressKeys(keys.ARROW_DOWN) // Press DOWN ARROW343 .getActiveElement()344 .getVisibleText()345 .then(function (value) {346 assert.strictEqual(value, "Dojo: The Definitive Guide\nISBN: 0596516487", "keystroke 2");347 })348 .end()349 .pressKeys(keys.ARROW_UP) // Press UP ARROW350 .getActiveElement()351 .getVisibleText()352 .then(function (value) {353 assert.strictEqual(value, "Amazon\nhttp://www.amazon.com", "keystroke 3");354 })355 .end()356 .pressKeys(keys.ARROW_DOWN) // Press DOWN ARROW357 .getActiveElement()358 .getVisibleText()359 .then(function (value) {360 assert.strictEqual(value, "Dojo: The Definitive Guide\nISBN: 0596516487", "keystroke 4");361 })362 .end()363 .pressKeys(keys.ARROW_RIGHT) // Press RIGHT ARROW364 .getActiveElement()365 .getVisibleText()366 .then(function (value) {367 assert.strictEqual(value, "Dojo: The Definitive Guide\nISBN: 0596516487", "keystroke 5");368 })369 .end()370 .pressKeys(keys.ENTER) // Enter "Actionable Mode" where you tab through elements inside of list item.371 .getActiveElement()372 .getVisibleText()373 .then(function (value) {374 assert.strictEqual(value, "Dojo: The Definitive Guide", "keystroke 6");375 })376 .end()377 .pressKeys(keys.SHIFT + keys.TAB) // Press Shift + TAB378 .pressKeys(keys.SHIFT) // release shift379 .getActiveElement()380 .getVisibleText()381 .then(function (value) {382 assert.strictEqual(value, "ISBN: 0596516487", "keystroke 7");383 })384 .end()385 .pressKeys(keys.TAB) // Press TAB386 .getActiveElement()387 .getVisibleText()388 .then(function (value) {389 assert.strictEqual(value, "Dojo: The Definitive Guide", "keystroke 8");390 })391 .end()392 .pressKeys(keys.TAB) // Press TAB393 .getActiveElement()394 .getVisibleText()395 .then(function (value) {396 assert.strictEqual(value, "ISBN: 0596516487", "keystroke 9");397 })398 .end()399 .pressKeys(keys.TAB) // Press TAB400 .getActiveElement()401 .getVisibleText()402 .then(function (value) {403 assert.strictEqual(value, "Dojo: The Definitive Guide", "keystroke 10");404 })405 .end()406 .pressKeys(keys.ARROW_UP) // Up arrow should have no effect in Actionable Mode.407 .getActiveElement()408 .getVisibleText()409 .then(function (value) {410 assert.strictEqual(value, "Dojo: The Definitive Guide", "keystroke 11");411 })412 .end()413 .pressKeys(keys.ARROW_DOWN) // Down arrow should have no effect in Actionable Mode.414 .getActiveElement()415 .getVisibleText()416 .then(function (value) {417 assert.strictEqual(value, "Dojo: The Definitive Guide", "keystroke 12");418 })419 .end()420 .execute("document.getElementById('keydownEvent').innerHTML = '';")421 .pressKeys(keys.ESCAPE) // Leave Actionable Mode.422 .getActiveElement()423 .getVisibleText()424 .then(function (value) {425 assert.strictEqual(value, "Dojo: The Definitive Guide\nISBN: 0596516487", "keystroke 13");426 })427 .end()428 .execute("return document.getElementById('keydownEvent').textContent;").then(function (text) {429 assert.strictEqual(text, "", "no keydown event on <body>");430 })431 .pressKeys(keys.SHIFT + keys.TAB)432 .pressKeys(keys.SHIFT) // release shift433 .pressKeys(keys.TAB) // Press TAB434 .getActiveElement()435 .getVisibleText()436 .then(function (value) {437 assert.strictEqual(value, "Dojo: The Definitive Guide\nISBN: 0596516487", "keystroke 14");438 })439 .end()440 .pressKeys(keys.F2) // Press F2441 .getActiveElement()442 .getVisibleText()443 .then(function (value) {444 assert.strictEqual(value, "Dojo: The Definitive Guide", "keystroke 15");445 })446 .end();447 },448 "keyboard multiple selection": function () {449 var remote = this.remote;450 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {451 return this.skip("no keyboard support");452 }453 return remote454 .get("deliteful/tests/functional/list/list-mark-1.html")455 .then(pollUntil("return ('ready' in window && ready "456 + "&& document.getElementById('list-mark-1') "457 + "&& !document.querySelector('#list-mark-1 .d-list-container')"458 + ".getAttribute('aria-busy') === false) ? true : null;",459 [],460 intern.config.WAIT_TIMEOUT,461 intern.config.POLL_INTERVAL))462 .pressKeys(keys.TAB) // Press TAB463 .getActiveElement()464 .getVisibleText()465 .then(function (value) {466 assert.strictEqual(value, "list item 0\nright text A");467 })468 .end()469 .pressKeys(keys.SPACE) // Press SPACE470 .getActiveElement()471 .getVisibleText()472 .then(function (value) {473 assert.strictEqual(value, "list item 0\nright text A");474 })475 .end()476 .findByCssSelector("[role=row]") // aria-selected is on row, not cell477 .getAttribute("aria-selected")478 .then(function (value) {479 assert.strictEqual(value, "true", "aria-selected list item 0, after space");480 })481 .end()482 .pressKeys(keys.SPACE) // Press SPACE483 .getActiveElement()484 .getVisibleText()485 .then(function (value) {486 assert.strictEqual(value, "list item 0\nright text A");487 })488 .end()489 .findByCssSelector("[role=row]") // aria-selected is on row, not cell490 .getAttribute("aria-selected")491 .then(function (value) {492 assert.strictEqual(value, "false", "aria-selected list item 0, after second space");493 })494 .end()495 .pressKeys(keys.SPACE) // Press SPACE496 .getActiveElement()497 .getVisibleText()498 .then(function (value) {499 assert.strictEqual(value, "list item 0\nright text A");500 })501 .end()502 .findByCssSelector("[role=row]") // aria-selected is on row, not cell503 .getAttribute("aria-selected")504 .then(function (value) {505 assert.strictEqual(value, "true", "aria-selected list item 0, after third space");506 })507 .end()508 .pressKeys(keys.ARROW_DOWN) // Press DOWN ARROW509 .getActiveElement()510 .getVisibleText()511 .then(function (value) {512 assert.strictEqual(value, "list item 1\nright text B");513 })514 .end()515 .pressKeys(keys.SPACE) // Press SPACE516 .getActiveElement()517 .getVisibleText()518 .then(function (value) {519 assert.strictEqual(value, "list item 1\nright text B");520 })521 .end()522 .findByCssSelector("[role=row]:nth-child(2)") // aria-selected is on row, not cell523 .getAttribute("aria-selected")524 .then(function (value) {525 assert.strictEqual(value, "true", "aria-selected list item 1, after space");526 })527 .end()528 .pressKeys(keys.ARROW_UP) // Press UP ARROW529 .getActiveElement()530 .getVisibleText()531 .then(function (value) {532 assert.strictEqual(value, "list item 0\nright text A");533 })534 .end()535 .findByCssSelector("[role=row]") // aria-selected is on row, not cell536 .getAttribute("aria-selected", "aria-selected list item 0, at end")537 .then(function (value) {538 assert.strictEqual(value, "true");539 })540 .end();541 },542 "keyboard single selection": function () {543 var remote = this.remote;544 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {545 return this.skip("no keyboard support");546 }547 return remote548 .get("deliteful/tests/functional/list/list-mark-2.html")549 .then(pollUntil("return ('ready' in window && ready "550 + "&& document.getElementById('list-mark-2') "551 + "&& !document.querySelector('#list-mark-2 .d-list-container')"552 + ".getAttribute('aria-busy') === false) ? true : null;",553 [],554 intern.config.WAIT_TIMEOUT,555 intern.config.POLL_INTERVAL))556 .pressKeys(keys.TAB) // Press TAB557 .getActiveElement()558 .getVisibleText()559 .then(function (value) {560 assert.strictEqual(value, "list item 0\nright text 1");561 })562 .end()563 .pressKeys(keys.SPACE) // Press SPACE564 .getActiveElement()565 .getVisibleText()566 .then(function (value) {567 assert.strictEqual(value, "list item 0\nright text 1");568 })569 .end()570 .findByCssSelector("[role=row]") // aria-selected is on row, not cell571 .getAttribute("aria-selected")572 .then(function (value) {573 assert.strictEqual(value, "true", "aria-selected list item 0, after space");574 })575 .end()576 .sleep(10)577 .pressKeys(keys.SPACE) // Press SPACE578 .getActiveElement()579 .getVisibleText()580 .then(function (value) {581 assert.strictEqual(value, "list item 0\nright text 1");582 })583 .end()584 .findByCssSelector("[role=row]") // aria-selected is on row, not cell585 .getAttribute("aria-selected")586 .then(function (value) {587 assert.strictEqual(value, "false", "aria-selected list item 0, after second space");588 })589 .end()590 .pressKeys(keys.SPACE) // Press SPACE591 .getActiveElement()592 .getVisibleText()593 .then(function (value) {594 assert.strictEqual(value, "list item 0\nright text 1");595 })596 .end()597 .findByCssSelector("[role=row]") // aria-selected is on row, not cell598 .getAttribute("aria-selected")599 .then(function (value) {600 assert.strictEqual(value, "true", "aria-selected list item 0, after third space");601 })602 .end()603 .pressKeys(keys.ARROW_DOWN) // Press DOWN ARROW604 .getActiveElement()605 .getVisibleText()606 .then(function (value) {607 assert.strictEqual(value, "list item 1\nright text 2");608 })609 .end()610 .pressKeys(keys.SPACE) // Press SPACE611 .getActiveElement()612 .getVisibleText()613 .then(function (value) {614 assert.strictEqual(value, "list item 1\nright text 2");615 })616 .end()617 .findByCssSelector("[role=row]:nth-child(2)") // aria-selected is on row, not cell618 .getAttribute("aria-selected")619 .then(function (value) {620 assert.strictEqual(value, "true", "aria-selected list item 1, after space");621 })622 .end()623 .pressKeys(keys.ARROW_UP) // Press UP ARROW624 .getActiveElement()625 .getVisibleText()626 .then(function (value) {627 assert.strictEqual(value, "list item 0\nright text 1");628 })629 .end()630 .findByCssSelector("[role=row]") // aria-selected is on row, not cell631 .getAttribute("aria-selected")632 .then(function (value) {633 assert.strictEqual(value, "false", "aria-selected list item 0, at end");634 })635 .end();636 },637 "keyboard radio selection": function () {638 var remote = this.remote;639 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {640 return this.skip("no keyboard support");641 }642 return remote643 .get("deliteful/tests/functional/list/list-mark-5.html")644 .then(pollUntil("return ('ready' in window && ready "645 + "&& document.getElementById('list-mark-5') "646 + "&& !document.querySelector('#list-mark-5 .d-list-container')"647 + ".getAttribute('aria-busy') === false) ? true : null;",648 [],649 intern.config.WAIT_TIMEOUT,650 intern.config.POLL_INTERVAL))651 .pressKeys(keys.TAB) // Press TAB652 .getActiveElement()653 .getVisibleText()654 .then(function (value) {655 assert.strictEqual(value, "list item 0\nright text 1", "keystroke 1");656 })657 .end()658 .pressKeys(keys.SPACE) // Press SPACE659 .getActiveElement()660 .getVisibleText()661 .then(function (value) {662 assert.strictEqual(value, "list item 0\nright text 1", "keystroke 2");663 })664 .end()665 .findByCssSelector("[role=row]") // aria-selected is on row, not cell666 .getAttribute("aria-selected")667 .then(function (value) {668 assert.strictEqual(value, "true", "keystroke 2");669 })670 .end()671 .sleep(10)672 .pressKeys(keys.SPACE) // Press SPACE673 .getActiveElement()674 .getVisibleText()675 .then(function (value) {676 assert.strictEqual(value, "list item 0\nright text 1", "keystroke 3");677 })678 .end()679 .findByCssSelector("[role=row]") // aria-selected is on row, not cell680 .getAttribute("aria-selected")681 .then(function (value) {682 assert.strictEqual(value, "true", "keystroke 3");683 })684 .end();685 },686 "keyboard search": function () {687 var remote = this.remote;688 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {689 return this.skip("no keyboard support");690 }691 return remote692 .get("deliteful/tests/functional/list/list-mark-1.html")693 .then(pollUntil("return ('ready' in window && ready "694 + "&& document.getElementById('list-mark-1') "695 + "&& !document.querySelector('#list-mark-1 .d-list-container')"696 + ".getAttribute('aria-busy') === false) ? true : null;",697 [],698 intern.config.WAIT_TIMEOUT,699 intern.config.POLL_INTERVAL))700 .pressKeys(keys.TAB) // Press TAB701 .getActiveElement()702 .getVisibleText()703 .then(function (value) {704 assert.strictEqual(value, "list item 0\nright text A", "initial");705 })706 .end()707 .pressKeys("R")708 .getActiveElement()709 .getVisibleText()710 .then(function (value) {711 assert.strictEqual(value, "list item 0\nright text A", "after R");712 })713 .end()714 .sleep(10)715 .pressKeys("r")716 .getActiveElement()717 .getVisibleText()718 .then(function (value) {719 assert.strictEqual(value, "list item 0\nright text A", "after r");720 })721 .end()722 .sleep(10)723 .pressKeys("L")724 .getActiveElement()725 .getVisibleText()726 .then(function (value) {727 assert.strictEqual(value, "list item 1\nright text B", "after L");728 })729 .end()730 .sleep(10)731 .pressKeys("l")732 .getActiveElement()733 .getVisibleText()734 .then(function (value) {735 assert.strictEqual(value, "list item 2\nright text C", "after l");736 })737 .end();738 },739 "custom keyboard navigation": function () {740 var remote = this.remote;741 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {742 return this.skip("no keyboard support");743 }744 return remote745 .get("deliteful/tests/functional/list/list-cust-1.html")746 .then(pollUntil("return ('ready' in window && ready "747 + "&& document.getElementById('list-cust-1') "748 + "&& !document.querySelector('#list-cust-1 .d-list-container')"749 + ".getAttribute('aria-busy') === false) ? true : null;",750 [],751 intern.config.WAIT_TIMEOUT,752 intern.config.POLL_INTERVAL))753 .pressKeys(keys.TAB) // Press TAB754 .pressKeys(keys.ENTER) // Press ENTER755 .getActiveElement().getVisibleText().then(function (value) {756 assert.strictEqual(value, "1 tabindex 1");757 }).end()758 .pressKeys(keys.TAB) // Press TAB759 .getActiveElement().getVisibleText().then(function (value) {760 assert.strictEqual(value, "4 tabindex 2");761 }).end()762 .pressKeys(keys.TAB) // Press TAB763 .getActiveElement().getVisibleText().then(function (value) {764 assert.strictEqual(value, "2 tabindex 3");765 }).end()766 .pressKeys(keys.TAB) // Press TAB767 .getActiveElement().getVisibleText().then(function (value) {768 assert.strictEqual(value, "5 tabindex 3");769 }).end()770 .pressKeys(keys.TAB) // Press TAB771 .getActiveElement().getVisibleText().then(function (value) {772 assert.strictEqual(value, "6 tabindex 0");773 }).end();774 },775 // Test of the recommended table layout, where each cell is either text or a single control.776 // Arrow key navigation goes directly to the controls.777 "table (multiple gridcells per row) with control cells": function () {778 var remote = this.remote;779 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {780 return this.skip("no keyboard support");781 }782 return remote783 .get("deliteful/tests/functional/list/table-1.html")784 .then(pollUntil("return ('ready' in window && ready "785 + "&& document.getElementById('table-1') "786 + "&& !document.querySelector('#table-1 .d-list-container')"787 + ".getAttribute('aria-busy') === false) ? true : null;",788 [],789 intern.config.WAIT_TIMEOUT,790 intern.config.POLL_INTERVAL))791 .pressKeys(keys.TAB)792 .getActiveElement().getVisibleText().then(function (value) {793 assert.strictEqual(value, "Amazon", "after tabbing into table");794 }).end()795 .pressKeys(keys.TAB)796 .getActiveElement().getAttribute("id").then(function (value) {797 assert.strictEqual(value, "after", "focus after shift-tab");798 }).end()799 .pressKeys(keys.SHIFT + keys.TAB)800 .pressKeys(keys.SHIFT) // release shift key801 .getActiveElement().getVisibleText().then(function (value) {802 assert.strictEqual(value, "Amazon", "after shift-tabbing back into table");803 }).end()804 .pressKeys(keys.ARROW_DOWN)805 .getActiveElement().getVisibleText().then(function (value) {806 assert.strictEqual(value, "Dojo: The Definitive Guide", "after arrow down");807 }).end()808 .pressKeys(keys.ARROW_RIGHT)809 .getActiveElement().getVisibleText().then(function (value) {810 assert.strictEqual(value, "ISBN: 0596516487", "after arrow right");811 }).end()812 .pressKeys(keys.ARROW_UP)813 .getActiveElement()814 .getVisibleText().then(function (value) {815 assert.strictEqual(value, "http://www.amazon.com", "after arrow up, link text");816 })817 .getAttribute("href").then(function (value) {818 assert.strictEqual(value, "http://www.amazon.com", "focused on link, not cell");819 })820 .end()821 .pressKeys(keys.ARROW_LEFT)822 .getActiveElement().getVisibleText().then(function (value) {823 assert.strictEqual(value, "Amazon", "after left arrow");824 }).end();825 },826 // Test of old-style where you need to use ENTER and ESC (or F2) to navigate the widgets within a cell.827 "table (multiple gridcells per row) with column with multiple widgets": function () {828 var remote = this.remote;829 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {830 return this.skip("no keyboard support");831 }832 return remote833 .get("deliteful/tests/functional/list/table-2.html")834 .then(pollUntil("return ('ready' in window && ready "835 + "&& document.getElementById('table-2') "836 + "&& !document.querySelector('#table-2 .d-list-container')"837 + ".getAttribute('aria-busy') === false) ? true : null;",838 [],839 intern.config.WAIT_TIMEOUT,840 intern.config.POLL_INTERVAL))841 .pressKeys(keys.TAB)842 .getActiveElement().getVisibleText().then(function (value) {843 assert.strictEqual(value, "Apple", "after tabbing into table");844 }).end()845 .pressKeys(keys.TAB)846 .getActiveElement().getAttribute("id").then(function (value) {847 assert.strictEqual(value, "after", "focus after tab");848 }).end()849 .pressKeys(keys.SHIFT + keys.TAB)850 .pressKeys(keys.SHIFT) // release shift key851 .getActiveElement().getVisibleText().then(function (value) {852 assert.strictEqual(value, "Apple", "after shift-tabbing back into table");853 }).end()854 .pressKeys(keys.ARROW_RIGHT)855 .getActiveElement().getAttribute("class").then(function (value) {856 assert.match(value, /complex-cell/, "after arrow right, focused on second cell");857 }).end()858 .pressKeys(keys.ENTER)859 .getActiveElement().getAttribute("id").then(function (value) {860 assert.strictEqual(value, "apple-input1", "after Enter, focused on first input");861 }).end()862 .pressKeys("abd")863 .pressKeys(keys.ARROW_LEFT) // should navigate within <input>864 .pressKeys("c")865 .getActiveElement().getAttribute("id").then(function (value) {866 assert.strictEqual(value, "apple-input1", "still focused on first input");867 }).end()868 .execute("return document.activeElement.value;").then(function (value) {869 assert.strictEqual(value, "abcd", "first input value, confirms left arrow navigated within it");870 }).end()871 .pressKeys(keys.TAB)872 .getActiveElement().getAttribute("id").then(function (value) {873 assert.strictEqual(value, "apple-input2", "tabbed to second input");874 }).end()875 .pressKeys(keys.TAB)876 .getActiveElement().getAttribute("id").then(function (value) {877 assert.strictEqual(value, "apple-button", "tabbed to button");878 }).end()879 .pressKeys(keys.TAB)880 .getActiveElement().getAttribute("id").then(function (value) {881 assert.strictEqual(value, "apple-input1", "tabbed back to first input");882 }).end()883 .pressKeys(keys.ESCAPE)884 .getActiveElement().getAttribute("class").then(function (value) {885 assert.match(value, /complex-cell/, "after esc, focused on second cell");886 }).end()887 .pressKeys(keys.ARROW_LEFT)888 .getActiveElement().getVisibleText().then(function (value) {889 assert.strictEqual(value, "Apple", "arrow left back to first cell");890 }).end();891 }892 });...

Full Screen

Full Screen

AriaListboxTests.js

Source:AriaListboxTests.js Github

copy

Full Screen

...135 intern.config.POLL_INTERVAL))136 .then(function () {137 return remote138 .pressKeys(keys.TAB)139 .getActiveElement()140 .getVisibleText()141 .then(function (value) {142 assert.strictEqual(value, "Programmatic item of order 0\nlist-prog-1");143 })144 .end()145 .pressKeys(keys.ARROW_DOWN)146 .getActiveElement()147 .getVisibleText()148 .then(function (value) {149 assert.strictEqual(value, "Programmatic item of order 1\nlist-prog-1");150 })151 .end()152 .pressKeys(keys.ARROW_DOWN)153 .getActiveElement()154 .getVisibleText()155 .then(function (value) {156 assert.strictEqual(value, "Programmatic item of order 2\nlist-prog-1");157 })158 .end()159 .pressKeys(keys.ARROW_RIGHT)160 .getActiveElement()161 .getVisibleText()162 .then(function (value) {163 assert.strictEqual(value, "Programmatic item of order 2\nlist-prog-1");164 })165 .end()166 .pressKeys(keys.ENTER)167 .getActiveElement()168 .getVisibleText()169 .then(function (value) {170 assert.strictEqual(value, "Programmatic item of order 2\nlist-prog-1");171 })172 .end()173 .pressKeys(keys.ARROW_UP)174 .getActiveElement()175 .getVisibleText()176 .then(function (value) {177 assert.strictEqual(value, "Programmatic item of order 1\nlist-prog-1");178 })179 .end()180 .pressKeys(keys.TAB)181 .pressKeys(keys.SHIFT + keys.TAB)182 .pressKeys(keys.SHIFT) // release shift183 .getActiveElement()184 .getVisibleText()185 .then(function (value) {186 assert.strictEqual(value, "Programmatic item of order 1\nlist-prog-1");187 })188 .end()189 .pressKeys(keys.F2)190 .getActiveElement()191 .getVisibleText()192 .then(function (value) {193 assert.strictEqual(value, "Programmatic item of order 1\nlist-prog-1");194 })195 .end();196 });197 },198 "keyboard navigation with categorized items": function () {199 var remote = this.remote;200 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {201 return this.skip("no keyboard support");202 }203 return remote204 .get("deliteful/tests/functional/list/listbox-mark-3.html")205 .then(pollUntil("return ('ready' in window && ready "206 + "&& document.getElementById('list-mark-3') "207 + "&& !document.querySelector('#list-mark-3 .d-list-container')"208 + ".getAttribute('aria-busy') === false) ? true : null;",209 [],210 intern.config.WAIT_TIMEOUT,211 intern.config.POLL_INTERVAL))212 .then(function () {213 return remote214 .pressKeys(keys.TAB)215 .getActiveElement()216 .getVisibleText()217 .then(function (value) {218 assert.strictEqual(value, "list item 0\nA");219 })220 .end()221 .pressKeys(keys.ARROW_DOWN) //5 times222 .pressKeys(keys.ARROW_DOWN)223 .pressKeys(keys.ARROW_DOWN)224 .pressKeys(keys.ARROW_DOWN)225 .pressKeys(keys.ARROW_DOWN)226 .getActiveElement()227 .getVisibleText()228 .then(function (value) {229 assert.strictEqual(value, "list item 5\nB");230 })231 .end();232 });233 },234 // TODO: ADD A TEST: CLICKING ON A CATEGORY HEADER (see https://github.com/ibm-js/delite/issues/229)235 "keyboard multiple selection": function () {236 var remote = this.remote;237 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {238 return this.skip("no keyboard support");239 }240 return remote241 .get("deliteful/tests/functional/list/listbox-mark-1.html")242 .then(pollUntil("return ('ready' in window && ready "243 + "&& document.getElementById('list-mark-1') "244 + "&& !document.querySelector('#list-mark-1 .d-list-container')"245 + ".getAttribute('aria-busy') === false) ? true : null;",246 [],247 intern.config.WAIT_TIMEOUT,248 intern.config.POLL_INTERVAL))249 .then(function () {250 return remote251 .pressKeys(keys.TAB)252 .getActiveElement()253 .getVisibleText()254 .then(function (value) {255 assert.strictEqual(value, "list item 0\nright text A");256 })257 .end()258 .pressKeys(keys.SPACE)259 .getActiveElement()260 .getVisibleText()261 .then(function (value) {262 assert.strictEqual(value, "list item 0\nright text A");263 })264 .getAttribute("aria-selected")265 .then(function (value) {266 assert.strictEqual(value, "true");267 })268 .end()269 .pressKeys(keys.SPACE)270 .getActiveElement()271 .getVisibleText()272 .then(function (value) {273 assert.strictEqual(value, "list item 0\nright text A");274 })275 .getAttribute("aria-selected")276 .then(function (value) {277 assert.strictEqual(value, "false");278 })279 .end();280 });281 },282 "keyboard single selection": function () {283 var remote = this.remote;284 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {285 return this.skip("no keyboard support");286 }287 return remote288 .get("deliteful/tests/functional/list/listbox-mark-2.html")289 .then(pollUntil("return ('ready' in window && ready "290 + "&& document.getElementById('list-mark-2') "291 + "&& !document.querySelector('#list-mark-2 .d-list-container')"292 + ".getAttribute('aria-busy') === false) ? true : null;",293 [],294 intern.config.WAIT_TIMEOUT,295 intern.config.POLL_INTERVAL))296 .then(function () {297 return remote298 .pressKeys(keys.TAB)299 .getActiveElement()300 .getVisibleText()301 .then(function (value) {302 assert.strictEqual(value, "list item 0\nright text 1", "keystroke 1");303 })304 .end()305 .pressKeys(keys.SPACE)306 .getActiveElement()307 .getVisibleText()308 .then(function (value) {309 assert.strictEqual(value, "list item 0\nright text 1", "keystroke 2");310 })311 .getAttribute("aria-selected")312 .then(function (value) {313 assert.strictEqual(value, "true", "keystroke 2");314 })315 .end()316 .sleep(10)317 .pressKeys(keys.SPACE)318 .getActiveElement()319 .getVisibleText()320 .then(function (value) {321 assert.strictEqual(value, "list item 0\nright text 1", "keystroke 3");322 })323 .getAttribute("aria-selected")324 .then(function (value) {325 assert.strictEqual(value, "false", "keystroke 3");326 })327 .end()328 .pressKeys(keys.END)329 .getActiveElement()330 .getVisibleText()331 .then(function (value) {332 assert.strictEqual(value, "list item 9\nright text 10", "keystroke 4");333 })334 .getAttribute("aria-selected")335 .then(function (value) {336 assert.strictEqual(value, "false", "keystroke 4");337 })338 .end()339 .pressKeys(keys.PAGE_DOWN)340 .getActiveElement()341 .getVisibleText()342 .then(function (value) {343 assert.strictEqual(value, "list item 9\nright text 10", "keystroke 5");344 })345 .getAttribute("aria-selected")346 .then(function (value) {347 assert.strictEqual(value, "false", "keystroke 5");348 })349 .end()350 .pressKeys(keys.HOME)351 .getActiveElement()352 .getVisibleText()353 .then(function (value) {354 assert.strictEqual(value, "list item 0\nright text 1", "keystroke 6");355 })356 .getAttribute("aria-selected")357 .then(function (value) {358 assert.strictEqual(value, "false", "keystroke 6");359 })360 .end()361 .pressKeys(keys.PAGE_UP)362 .getActiveElement()363 .getVisibleText()364 .then(function (value) {365 assert.strictEqual(value, "list item 0\nright text 1", "keystroke 7");366 })367 .getAttribute("aria-selected")368 .then(function (value) {369 assert.strictEqual(value, "false", "keystroke 7");370 })371 .end();372 });373 },374 "keyboard search": function () {375 var remote = this.remote;376 if (remote.environmentType.brokenSendKeys || !remote.environmentType.nativeEvents) {377 return this.skip("no keyboard support");378 }379 return remote380 .get("deliteful/tests/functional/list/listbox-mark-1.html")381 .then(pollUntil("return ('ready' in window && ready "382 + "&& document.getElementById('list-mark-1') "383 + "&& !document.querySelector('#list-mark-1 .d-list-container')"384 + ".getAttribute('aria-busy') === false) ? true : null;",385 [],386 intern.config.WAIT_TIMEOUT,387 intern.config.POLL_INTERVAL))388 .then(function () {389 return remote390 .pressKeys(keys.TAB)391 .getActiveElement()392 .getVisibleText()393 .then(function (value) {394 assert.strictEqual(value, "list item 0\nright text A");395 })396 .end()397 .pressKeys("R")398 .getActiveElement()399 .getVisibleText()400 .then(function (value) {401 assert.strictEqual(value, "list item 0\nright text A");402 })403 .end()404 .sleep(10)405 .pressKeys("r")406 .getActiveElement()407 .getVisibleText()408 .then(function (value) {409 assert.strictEqual(value, "list item 0\nright text A");410 })411 .end()412 .sleep(10)413 .pressKeys("L")414 .getActiveElement()415 .getVisibleText()416 .then(function (value) {417 assert.strictEqual(value, "list item 1\nright text B");418 })419 .end()420 .sleep(10)421 .pressKeys("l")422 .getActiveElement()423 .getVisibleText()424 .then(function (value) {425 assert.strictEqual(value, "list item 2\nright text C");426 })427 .end();428 });429 }430 });...

Full Screen

Full Screen

scrollspy.js

Source:scrollspy.js Github

copy

Full Screen

...61 ScrollSpy._elementsInView.splice(ScrollSpy._elementsInView.indexOf(this), 1);62 ScrollSpy._visibleElements.splice(ScrollSpy._visibleElements.indexOf(this.$el), 1);63 ScrollSpy._count--;64 this._removeEventHandlers();65 $(this.options.getActiveElement(this.$el.attr('id'))).removeClass(this.options.activeClass);66 this.el.M_ScrollSpy = undefined;67 }68 /**69 * Setup Event Handlers70 */71 _setupEventHandlers() {72 let throttledResize = M.throttle(this._handleWindowScroll, 200);73 this._handleThrottledResizeBound = throttledResize.bind(this);74 this._handleWindowScrollBound = this._handleWindowScroll.bind(this);75 if (ScrollSpy._count === 1) {76 window.addEventListener('scroll', this._handleWindowScrollBound);77 window.addEventListener('resize', this._handleThrottledResizeBound);78 document.body.addEventListener('click', this._handleTriggerClick);79 }80 }81 /**82 * Remove Event Handlers83 */84 _removeEventHandlers() {85 if (ScrollSpy._count === 0) {86 window.removeEventListener('scroll', this._handleWindowScrollBound);87 window.removeEventListener('resize', this._handleThrottledResizeBound);88 document.body.removeEventListener('click', this._handleTriggerClick);89 }90 }91 /**92 * Handle Trigger Click93 * @param {Event} e94 */95 _handleTriggerClick(e) {96 let $trigger = $(e.target);97 for (let i = ScrollSpy._elements.length - 1; i >= 0; i--) {98 let scrollspy = ScrollSpy._elements[i];99 if ($trigger.is('a[href="#' + scrollspy.$el.attr('id') + '"]')) {100 e.preventDefault();101 let offset = scrollspy.$el.offset().top + 1;102 anim({103 targets: [document.documentElement, document.body],104 scrollTop: offset - scrollspy.options.scrollOffset,105 duration: 400,106 easing: 'easeOutCubic'107 });108 break;109 }110 }111 }112 /**113 * Handle Window Scroll114 */115 _handleWindowScroll() {116 // unique tick id117 ScrollSpy._ticks++;118 // viewport rectangle119 let top = M.getDocumentScrollTop(),120 left = M.getDocumentScrollLeft(),121 right = left + window.innerWidth,122 bottom = top + window.innerHeight;123 // determine which elements are in view124 let intersections = ScrollSpy._findElements(top, right, bottom, left);125 for (let i = 0; i < intersections.length; i++) {126 let scrollspy = intersections[i];127 let lastTick = scrollspy.tickId;128 if (lastTick < 0) {129 // entered into view130 scrollspy._enter();131 }132 // update tick id133 scrollspy.tickId = ScrollSpy._ticks;134 }135 for (let i = 0; i < ScrollSpy._elementsInView.length; i++) {136 let scrollspy = ScrollSpy._elementsInView[i];137 let lastTick = scrollspy.tickId;138 if (lastTick >= 0 && lastTick !== ScrollSpy._ticks) {139 // exited from view140 scrollspy._exit();141 scrollspy.tickId = -1;142 }143 }144 // remember elements in view for next tick145 ScrollSpy._elementsInView = intersections;146 }147 /**148 * Find elements that are within the boundary149 * @param {number} top150 * @param {number} right151 * @param {number} bottom152 * @param {number} left153 * @return {Array.<ScrollSpy>} A collection of elements154 */155 static _findElements(top, right, bottom, left) {156 let hits = [];157 for (let i = 0; i < ScrollSpy._elements.length; i++) {158 let scrollspy = ScrollSpy._elements[i];159 let currTop = top + scrollspy.options.scrollOffset || 200;160 if (scrollspy.$el.height() > 0) {161 let elTop = scrollspy.$el.offset().top,162 elLeft = scrollspy.$el.offset().left,163 elRight = elLeft + scrollspy.$el.width(),164 elBottom = elTop + scrollspy.$el.height();165 let isIntersect = !(166 elLeft > right ||167 elRight < left ||168 elTop > bottom ||169 elBottom < currTop170 );171 if (isIntersect) {172 hits.push(scrollspy);173 }174 }175 }176 return hits;177 }178 _enter() {179 ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter(function(value) {180 return value.height() != 0;181 });182 if (ScrollSpy._visibleElements[0]) {183 $(this.options.getActiveElement(ScrollSpy._visibleElements[0].attr('id'))).removeClass(184 this.options.activeClass185 );186 if (187 ScrollSpy._visibleElements[0][0].M_ScrollSpy &&188 this.id < ScrollSpy._visibleElements[0][0].M_ScrollSpy.id189 ) {190 ScrollSpy._visibleElements.unshift(this.$el);191 } else {192 ScrollSpy._visibleElements.push(this.$el);193 }194 } else {195 ScrollSpy._visibleElements.push(this.$el);196 }197 $(this.options.getActiveElement(ScrollSpy._visibleElements[0].attr('id'))).addClass(198 this.options.activeClass199 );200 }201 _exit() {202 ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter(function(value) {203 return value.height() != 0;204 });205 if (ScrollSpy._visibleElements[0]) {206 $(this.options.getActiveElement(ScrollSpy._visibleElements[0].attr('id'))).removeClass(207 this.options.activeClass208 );209 ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter((el) => {210 return el.attr('id') != this.$el.attr('id');211 });212 if (ScrollSpy._visibleElements[0]) {213 // Check if empty214 $(this.options.getActiveElement(ScrollSpy._visibleElements[0].attr('id'))).addClass(215 this.options.activeClass216 );217 }218 }219 }220 }221 /**222 * @static223 * @memberof ScrollSpy224 * @type {Array.<ScrollSpy>}225 */226 ScrollSpy._elements = [];227 /**228 * @static...

Full Screen

Full Screen

DateTime.js

Source:DateTime.js Github

copy

Full Screen

...30 })31 const d = new Date('2003-04-05')32 userEvent.tab()33 expect(result.getByLabelText('Year')).toHaveFocus()34 expect(getActiveElement()).toHaveTextContent(new RegExp('^0*' + d.getFullYear() + '$'))35 // next year36 fireEvent.keyDown(getActiveElement(), {key: 'ArrowUp'})37 d.setFullYear(d.getFullYear() +1)38 // next aspect39 fireEvent.keyDown(getActiveElement(), {key: 'ArrowRight'})40 expect(getLiformValue()).toEqual(dateUtil.formatByString(d, 'yyyy-MM-dd'))41 expect(result.getByLabelText('Month')).toHaveFocus()42 expect(getActiveElement()).toHaveTextContent(new RegExp('^0*' + (d.getMonth()+1) + '$'))43 })44 it('Render and change date input per typing', () => {45 const { result, getActiveElement, getLiformValue } = testLifield({46 schema: {47 type: 'string',48 widget: 'date',49 title: 'foo',50 },51 value: '2001-02-03',52 })53 const d = new Date('2001-02-03')54 userEvent.tab()55 userEvent.click(result.getByLabelText('Month'))56 expect(result.getByLabelText('Month')).toHaveFocus()57 // this should jump to the next aspect58 // can not use userEvent.type due to https://github.com/testing-library/user-event/issues/44259 // userEvent.type(getActiveElement(), '8')60 fireEvent.input(getActiveElement(), {target: {textContent: '8'}})61 d.setMonth(7)62 expect(getLiformValue()).toEqual(dateUtil.formatByString(d, 'yyyy-MM-dd'))63 expect(result.getByLabelText('Day of the month')).toHaveFocus()64 expect(getActiveElement()).toHaveTextContent(new RegExp('^0*' + (d.getDate()) + '$'))65 // userEvent.type(getActiveElement(), '1')66 fireEvent.input(getActiveElement(), {target: {textContent: '1'}})67 expect(getLiformValue()).toEqual(dateUtil.formatByString(d, 'yyyy-MM-dd'))68 expect(getActiveElement()).toHaveTextContent('01')69 // userEvent.type(getActiveElement(), '7')70 fireEvent.input(getActiveElement(), {target: {textContent: '17'}})71 d.setDate(17)72 expect(getLiformValue()).toEqual(dateUtil.formatByString(d, 'yyyy-MM-dd'))73 })74 it('Render and change time input', async () => {75 const { result, getLiformValue } = testLifield({76 schema: {77 type: 'string',78 widget: 'time',79 title: 'foo',80 },81 value: '13:14',82 })83 userEvent.click(result.getByLabelText('foo'))84 userEvent.click(result.getByText('AM'))...

Full Screen

Full Screen

KeyboardTab.js

Source:KeyboardTab.js Github

copy

Full Screen

...19 }, null, 5000));20 });21 test.test('grids with and without headers -> tab key', function () {22 return this.remote23 .getActiveElement()24 .getAttribute('id')25 .then(function (id) {26 assert.strictEqual(id, 'showHeaderButton', 'Focus is on the button: ' + id);27 })28 .type(tabKey)29 .end()30 .getActiveElement()31 .getAttribute('role').then(function (role) {32 assert.strictEqual(role, 'columnheader', 'Focus is on a column header: ' + role);33 })34 .type(tabKey)35 .end()36 .getActiveElement()37 .getAttribute('role').then(function (role) {38 assert.strictEqual(role, 'gridcell', 'Focus is on a grid cell: ' + role);39 })40 .getVisibleText()41 .then(function (text) {42 assert.strictEqual(text, '0', 'The cell with focus contains 0: ' + text);43 })44 .type(tabKey)45 .end()46 .getActiveElement()47 .getAttribute('role').then(function (role) {48 assert.strictEqual(role, 'gridcell', 'Focus is on a grid cell: ' + role);49 })50 .getVisibleText()51 .then(function (text) {52 assert.strictEqual(text, '10', 'The cell with focus contains 10: ' + text);53 })54 .end()55 .findById('showHeaderButton')56 .click()57 .end()58 .getActiveElement()59 .getAttribute('id')60 .then(function (id) {61 assert.strictEqual(id, 'showHeaderButton', 'Focus is on the button: ' + id);62 })63 .type(tabKey)64 .end()65 .getActiveElement()66 .getAttribute('role').then(function (role) {67 assert.strictEqual(role, 'columnheader', 'Focus is on a column header: ' + role);68 })69 .type(tabKey)70 .end()71 .getActiveElement()72 .getAttribute('role').then(function (role) {73 assert.strictEqual(role, 'gridcell', 'Focus is on a grid cell: ' + role);74 })75 .getVisibleText()76 .then(function (text) {77 assert.strictEqual(text, '0', 'The cell with focus contains 0: ' + text);78 })79 .type(tabKey)80 .end()81 .getActiveElement()82 .getAttribute('role').then(function (role) {83 assert.strictEqual(role, 'columnheader', 'Focus is on a column header: ' + role);84 })85 .type(tabKey)86 .end()87 .getActiveElement()88 .getAttribute('role').then(function (role) {89 assert.strictEqual(role, 'gridcell', 'Focus is on a grid cell: ' + role);90 })91 .getVisibleText()92 .then(function (text) {93 assert.strictEqual(text, '10', 'The cell with focus contains 10: ' + text);94 });95 });96 });...

Full Screen

Full Screen

preferences.js

Source:preferences.js Github

copy

Full Screen

...14 }15 function selectTab() {16 var tabName = $(this).prop('id');17 if (tabName == active) return;18 getActiveElement().toggleClass('active');19 active = tabName;20 loadTab();21 }22 function loadTab() {23 modals.destroyModal('preferences');24 store.set('preferences.activeTab', active);25 $('#preferences-content').load(__dirname + '/modals/preferences/' + getActiveElement().data('url'));26 getActiveElement().toggleClass('active');27 }28 function getActiveElement() {29 return $(`#${active}`);30 }...

Full Screen

Full Screen

getActiveElement-test.js

Source:getActiveElement-test.js Github

copy

Full Screen

...9jest.unmock('getActiveElement');10var getActiveElement = require('getActiveElement');11describe('getActiveElement', () => {12 it('returns body when there is no activeElement', () => {13 var element = getActiveElement();14 expect(element.tagName).toEqual('BODY');15 });16 it('uses optional document parameter when provided', () => {17 var iframe = document.createElement('iframe');18 document.body.appendChild(iframe);19 var iframeDocument = iframe.contentDocument;20 var element = getActiveElement(iframeDocument);21 try {22 expect(element.ownerDocument).toBe(iframeDocument);23 expect(element.ownerDocument).not.toBe(document);24 } finally {25 document.body.removeChild(iframe);26 }27 });...

Full Screen

Full Screen

getActiveElement_spec.js

Source:getActiveElement_spec.js Github

copy

Full Screen

...6describeIfNoWindow('getActiveElement', () => {7 describe('without `document`', () => {8 it('returns false', () => {9 expect(typeof document).to.equal('undefined');10 expect(getActiveElement()).to.equal(false);11 });12 });13 wrap()14 .withGlobal('document', () => ({}))15 .describe('with `document`', () => {16 it('returns undefined without `document.activeElement`', () => {17 expect(getActiveElement()).to.be.an('undefined');18 });19 wrap()20 .withOverride(() => document, 'activeElement', () => test)21 .it('returns activeElement value with `document.activeElement', () => {22 expect(getActiveElement()).to.equal(test);23 });24 });...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.click('text=Docs');7 await page.click('text=API');8 const element = await page.$('text=ElementHandle');9 await element.click();10 await page.waitForSelector('text=ElementHandle');11 const activeElement = await page.evaluateHandle(() => document.activeElement);12 console.log(await activeElement.evaluate(node => node.textContent));13 await browser.close();14})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { getActiveElement } = require('playwright/lib/client/selectorEngine');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const element = await getActiveElement(page);8 console.log(await element.evaluate(element => element.nodeName));9 await browser.close();10})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { getActiveElement } = require('playwright/lib/server/dom');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.click('input[title="Search"]');8 const activeElement = await getActiveElement(page);9 console.log(activeElement);10 await browser.close();11})();12ElementHandle {13 _page: Page {14 _browser: Browser {15 _connection: Connection {16 },17 },18 _timeoutSettings: TimeoutSettings { _defaultNavigationTimeout: 30000 },19 _keyboard: Keyboard {20 _pressedKeys: Set(0) {},21 _pressedChars: Set(0) {}22 },23 _mouse: Mouse {24 },

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.click('input[name="q"]');7 const activeElement = await page.evaluate(() => {8 return document.activeElement;9 });10 console.log(activeElement);11 await browser.close();12})();13const { chromium } = require('playwright');14(async () => {15 const browser = await chromium.launch();16 const context = await browser.newContext();17 const page = await context.newPage();18 await page.click('input[name="q"]');19 const activeElement = await page.activeElement();20 console.log(activeElement);21 await browser.close();22})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const page = await browser.newPage();2await page.evaluate(() => {3 return document.activeElement;4});5const page = await browser.newPage();6await page.evaluate(() => {7 return document.activeElement;8});9const page = await browser.newPage();10await page.evaluate(() => {11 return document.activeElement;12});13const page = await browser.newPage();14await page.evaluate(() => {15 return document.activeElement;16});17const page = await browser.newPage();18await page.evaluate(() => {19 return document.activeElement;20});21const page = await browser.newPage();22await page.evaluate(() => {23 return document.activeElement;24});25const page = await browser.newPage();26await page.evaluate(() => {27 return document.activeElement;28});29const page = await browser.newPage();30await page.evaluate(() => {31 return document.activeElement;32});33const page = await browser.newPage();34await page.evaluate(() => {35 return document.activeElement;36});37const page = await browser.newPage();38await page.evaluate(() => {39 return document.activeElement;40});41const page = await browser.newPage();42await page.evaluate(() => {43 return document.activeElement;44});45const page = await browser.newPage();46await page.evaluate(() => {47 return document.activeElement;48});

Full Screen

Using AI Code Generation

copy

Full Screen

1const page = await browser.newPage();2await page.click('text=Get Started');3await page.waitForSelector('text=Get Started');4const element = await page.getActiveElement();5console.log(await element.innerText());6const page = await browser.newPage();7await page.click('text=Get Started');8await page.waitForSelector('text=Get Started');9const element = await page.getActiveElement();10console.log(await element.innerText());11const page = await browser.newPage();12await page.click('text=Get Started');13await page.waitForSelector('text=Get Started');14const element = await page.getActiveElement();15console.log(await element.innerText());16const page = await browser.newPage();17await page.click('text=Get Started');18await page.waitForSelector('text=Get Started');19const element = await page.getActiveElement();20console.log(await element.innerText());21const page = await browser.newPage();22await page.click('text=Get Started');23await page.waitForSelector('text=Get Started');24const element = await page.getActiveElement();25console.log(await element.innerText());26const page = await browser.newPage();27await page.click('text=Get Started');28await page.waitForSelector('text=Get Started');29const element = await page.getActiveElement();30console.log(await element.innerText());31const page = await browser.newPage();32await page.click('text=Get Started');33await page.waitForSelector('text=Get Started');34const element = await page.getActiveElement();35console.log(await element.innerText());36const page = await browser.newPage();37await page.click('text=Get Started');38await page.waitForSelector('text=

Full Screen

Playwright tutorial

LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful