Best JavaScript code snippet using playwright-internal
aria-roles.js
Source:aria-roles.js
1// Source: https://www.w3.org/TR/wai-aria-1.1/#roles2/* easiest way to see allowed roles is to filter out the global ones3 from the list of inherited states and properties. The dpub spec4 does not have the global list so you'll need to copy over from5 the wai-aria one:6 const globalAttrs = Array.from(7 document.querySelectorAll('#global_states li')8 ).map(li => li.textContent.replace(/\s*\(.*\)/, ''));9 const globalRoleAttrs = Array.from(10 document.querySelectorAll('.role-inherited li')11 ).filter(li => globalAttrs.includes(li.textContent.replace(/\s*\(.*\)/, '')))12 globalRoleAttrs.forEach(li => li.style.display = 'none');13*/14const ariaRoles = {15 alert: {16 type: 'widget',17 allowedAttrs: ['aria-expanded'],18 superclassRole: ['section']19 },20 alertdialog: {21 type: 'widget',22 allowedAttrs: ['aria-expanded', 'aria-modal'],23 superclassRole: ['alert', 'dialog'],24 accessibleNameRequired: true25 },26 application: {27 // Note: spec difference28 type: 'landmark',29 // Note: aria-expanded is not in the 1.1 spec but is30 // consistently supported in ATs and was added in 1.231 allowedAttrs: ['aria-activedescendant', 'aria-expanded'],32 superclassRole: ['structure'],33 accessibleNameRequired: true34 },35 article: {36 type: 'structure',37 allowedAttrs: ['aria-posinset', 'aria-setsize', 'aria-expanded'],38 superclassRole: ['document']39 },40 banner: {41 type: 'landmark',42 allowedAttrs: ['aria-expanded'],43 superclassRole: ['landmark']44 },45 blockquote: {46 type: 'structure',47 superclassRole: ['section']48 },49 button: {50 type: 'widget',51 allowedAttrs: ['aria-expanded', 'aria-pressed'],52 superclassRole: ['command'],53 accessibleNameRequired: true,54 nameFromContent: true55 },56 caption: {57 type: 'structure',58 requiredContext: ['figure', 'table', 'grid', 'treegrid'],59 superclassRole: ['section']60 },61 cell: {62 type: 'structure',63 requiredContext: ['row'],64 allowedAttrs: [65 'aria-colindex',66 'aria-colspan',67 'aria-rowindex',68 'aria-rowspan',69 'aria-expanded'70 ],71 superclassRole: ['section'],72 nameFromContent: true73 },74 checkbox: {75 type: 'widget',76 // Note: since the checkbox role has an implicit77 // aria-checked value it is not required to be added by78 // the user79 //80 // Note: aria-required is not in the 1.1 spec but is81 // consistently supported in ATs and was added in 1.282 allowedAttrs: ['aria-checked', 'aria-readonly', 'aria-required'],83 superclassRole: ['input'],84 accessibleNameRequired: true,85 nameFromContent: true86 },87 code: {88 type: 'structure',89 superclassRole: ['section']90 },91 columnheader: {92 type: 'structure',93 requiredContext: ['row'],94 allowedAttrs: [95 'aria-sort',96 'aria-colindex',97 'aria-colspan',98 'aria-expanded',99 'aria-readonly',100 'aria-required',101 'aria-rowindex',102 'aria-rowspan',103 'aria-selected'104 ],105 superclassRole: ['cell', 'gridcell', 'sectionhead'],106 // Note: spec difference107 accessibleNameRequired: false,108 nameFromContent: true109 },110 combobox: {111 type: 'composite',112 requiredOwned: ['listbox', 'tree', 'grid', 'dialog', 'textbox'],113 requiredAttrs: ['aria-expanded'],114 // Note: because aria-controls is not well supported we will not115 // make it a required attribute even though it is required in the116 // spec117 allowedAttrs: [118 'aria-controls',119 'aria-autocomplete',120 'aria-readonly',121 'aria-required',122 'aria-activedescendant',123 'aria-orientation'124 ],125 superclassRole: ['select'],126 accessibleNameRequired: true127 },128 command: {129 type: 'abstract',130 superclassRole: ['widget']131 },132 complementary: {133 type: 'landmark',134 allowedAttrs: ['aria-expanded'],135 superclassRole: ['landmark']136 },137 composite: {138 type: 'abstract',139 superclassRole: ['widget']140 },141 contentinfo: {142 type: 'landmark',143 allowedAttrs: ['aria-expanded'],144 superclassRole: ['landmark']145 },146 definition: {147 type: 'structure',148 allowedAttrs: ['aria-expanded'],149 superclassRole: ['section']150 },151 deletion: {152 type: 'structure',153 superclassRole: ['section']154 },155 dialog: {156 type: 'widget',157 allowedAttrs: ['aria-expanded', 'aria-modal'],158 superclassRole: ['window'],159 accessibleNameRequired: true160 },161 directory: {162 type: 'structure',163 allowedAttrs: ['aria-expanded'],164 superclassRole: ['list'],165 // Note: spec difference166 nameFromContent: true167 },168 document: {169 type: 'structure',170 allowedAttrs: ['aria-expanded'],171 superclassRole: ['structure']172 },173 emphasis: {174 type: 'structure',175 superclassRole: ['section']176 },177 feed: {178 type: 'structure',179 requiredOwned: ['article'],180 allowedAttrs: ['aria-expanded'],181 superclassRole: ['list']182 },183 figure: {184 type: 'structure',185 allowedAttrs: ['aria-expanded'],186 superclassRole: ['section'],187 // Note: spec difference188 nameFromContent: true189 },190 form: {191 type: 'landmark',192 allowedAttrs: ['aria-expanded'],193 superclassRole: ['landmark']194 },195 grid: {196 type: 'composite',197 requiredOwned: ['rowgroup', 'row'],198 allowedAttrs: [199 'aria-level',200 'aria-multiselectable',201 'aria-readonly',202 'aria-activedescendant',203 'aria-colcount',204 'aria-expanded',205 'aria-rowcount'206 ],207 superclassRole: ['composite', 'table'],208 // Note: spec difference209 accessibleNameRequired: false210 },211 gridcell: {212 type: 'widget',213 requiredContext: ['row'],214 allowedAttrs: [215 'aria-readonly',216 'aria-required',217 'aria-selected',218 'aria-colindex',219 'aria-colspan',220 'aria-expanded',221 'aria-rowindex',222 'aria-rowspan'223 ],224 superclassRole: ['cell', 'widget'],225 nameFromContent: true226 },227 group: {228 type: 'structure',229 allowedAttrs: ['aria-activedescendant', 'aria-expanded'],230 superclassRole: ['section']231 },232 heading: {233 type: 'structure',234 requiredAttrs: ['aria-level'],235 allowedAttrs: ['aria-expanded'],236 superclassRole: ['sectionhead'],237 // Note: spec difference238 accessibleNameRequired: false,239 nameFromContent: true240 },241 img: {242 type: 'structure',243 allowedAttrs: ['aria-expanded'],244 superclassRole: ['section'],245 accessibleNameRequired: true246 },247 input: {248 type: 'abstract',249 superclassRole: ['widget']250 },251 insertion: {252 type: 'structure',253 superclassRole: ['section']254 },255 landmark: {256 type: 'abstract',257 superclassRole: ['section']258 },259 link: {260 type: 'widget',261 allowedAttrs: ['aria-expanded'],262 superclassRole: ['command'],263 accessibleNameRequired: true,264 nameFromContent: true265 },266 list: {267 type: 'structure',268 requiredOwned: ['listitem'],269 allowedAttrs: ['aria-expanded'],270 superclassRole: ['section']271 },272 listbox: {273 type: 'composite',274 requiredOwned: ['option'],275 allowedAttrs: [276 'aria-multiselectable',277 'aria-readonly',278 'aria-required',279 'aria-activedescendant',280 'aria-expanded',281 'aria-orientation'282 ],283 superclassRole: ['select'],284 accessibleNameRequired: true285 },286 listitem: {287 type: 'structure',288 requiredContext: ['list'],289 allowedAttrs: [290 'aria-level',291 'aria-posinset',292 'aria-setsize',293 'aria-expanded'294 ],295 superclassRole: ['section'],296 // Note: spec difference297 nameFromContent: true298 },299 log: {300 type: 'widget',301 allowedAttrs: ['aria-expanded'],302 superclassRole: ['section']303 },304 main: {305 type: 'landmark',306 allowedAttrs: ['aria-expanded'],307 superclassRole: ['landmark']308 },309 marquee: {310 type: 'widget',311 allowedAttrs: ['aria-expanded'],312 superclassRole: ['section']313 },314 math: {315 type: 'structure',316 allowedAttrs: ['aria-expanded'],317 superclassRole: ['section']318 },319 menu: {320 type: 'composite',321 requiredOwned: ['menuitemradio', 'menuitem', 'menuitemcheckbox'],322 allowedAttrs: [323 'aria-activedescendant',324 'aria-expanded',325 'aria-orientation'326 ],327 superclassRole: ['select']328 },329 menubar: {330 type: 'composite',331 requiredOwned: ['menuitemradio', 'menuitem', 'menuitemcheckbox'],332 allowedAttrs: [333 'aria-activedescendant',334 'aria-expanded',335 'aria-orientation'336 ],337 superclassRole: ['menu']338 },339 menuitem: {340 type: 'widget',341 requiredContext: ['menu', 'menubar'],342 // Note: aria-expanded is not in the 1.1 spec but is343 // consistently supported in ATs and was added in 1.2344 allowedAttrs: ['aria-posinset', 'aria-setsize', 'aria-expanded'],345 superclassRole: ['command'],346 accessibleNameRequired: true,347 nameFromContent: true348 },349 menuitemcheckbox: {350 type: 'widget',351 requiredContext: ['menu', 'menubar'],352 allowedAttrs: [353 'aria-checked',354 'aria-posinset',355 'aria-readonly',356 'aria-setsize'357 ],358 superclassRole: ['checkbox', 'menuitem'],359 accessibleNameRequired: true,360 nameFromContent: true361 },362 menuitemradio: {363 type: 'widget',364 requiredContext: ['menu', 'menubar', 'group'],365 allowedAttrs: [366 'aria-checked',367 'aria-posinset',368 'aria-readonly',369 'aria-setsize'370 ],371 superclassRole: ['menuitemcheckbox', 'radio'],372 accessibleNameRequired: true,373 nameFromContent: true374 },375 meter: {376 type: 'structure',377 allowedAttrs: ['aria-valuetext'],378 requiredAttrs: ['aria-valuemax', 'aria-valuemin', 'aria-valuenow'],379 superclassRole: ['range'],380 accessibleNameRequired: true381 },382 navigation: {383 type: 'landmark',384 allowedAttrs: ['aria-expanded'],385 superclassRole: ['landmark']386 },387 none: {388 type: 'structure',389 superclassRole: ['structure']390 },391 note: {392 type: 'structure',393 allowedAttrs: ['aria-expanded'],394 superclassRole: ['section']395 },396 option: {397 type: 'widget',398 requiredContext: ['listbox'],399 // Note: since the option role has an implicit400 // aria-selected value it is not required to be added by401 // the user402 allowedAttrs: [403 'aria-selected',404 'aria-checked',405 'aria-posinset',406 'aria-setsize'407 ],408 superclassRole: ['input'],409 accessibleNameRequired: true,410 nameFromContent: true411 },412 paragraph: {413 type: 'structure',414 superclassRole: ['section']415 },416 presentation: {417 type: 'structure',418 superclassRole: ['structure']419 },420 progressbar: {421 type: 'widget',422 allowedAttrs: [423 'aria-expanded',424 'aria-valuemax',425 'aria-valuemin',426 'aria-valuenow',427 'aria-valuetext'428 ],429 superclassRole: ['range'],430 accessibleNameRequired: true431 },432 radio: {433 type: 'widget',434 // Note: since the radio role has an implicit435 // aria-check value it is not required to be added by436 // the user437 //438 // Note: aria-required is not in the 1.1 or 1.2 specs but is439 // consistently supported in ATs on the individual radio element440 allowedAttrs: [441 'aria-checked',442 'aria-posinset',443 'aria-setsize',444 'aria-required'445 ],446 superclassRole: ['input'],447 accessibleNameRequired: true,448 nameFromContent: true449 },450 radiogroup: {451 type: 'composite',452 requiredOwned: ['radio'],453 allowedAttrs: [454 'aria-readonly',455 'aria-required',456 'aria-activedescendant',457 'aria-expanded',458 'aria-orientation'459 ],460 superclassRole: ['select'],461 // Note: spec difference462 accessibleNameRequired: false463 },464 range: {465 type: 'abstract',466 superclassRole: ['widget']467 },468 region: {469 type: 'landmark',470 allowedAttrs: ['aria-expanded'],471 superclassRole: ['landmark'],472 // Note: spec difference473 accessibleNameRequired: false474 },475 roletype: {476 type: 'abstract',477 superclassRole: []478 },479 row: {480 type: 'structure',481 requiredContext: ['grid', 'rowgroup', 'table', 'treegrid'],482 requiredOwned: ['cell', 'columnheader', 'gridcell', 'rowheader'],483 allowedAttrs: [484 'aria-colindex',485 'aria-level',486 'aria-rowindex',487 'aria-selected',488 'aria-activedescendant',489 'aria-expanded'490 ],491 superclassRole: ['group', 'widget'],492 nameFromContent: true493 },494 rowgroup: {495 type: 'structure',496 requiredContext: ['grid', 'table', 'treegrid'],497 requiredOwned: ['row'],498 superclassRole: ['structure'],499 nameFromContent: true500 },501 rowheader: {502 type: 'structure',503 requiredContext: ['row'],504 allowedAttrs: [505 'aria-sort',506 'aria-colindex',507 'aria-colspan',508 'aria-expanded',509 'aria-readonly',510 'aria-required',511 'aria-rowindex',512 'aria-rowspan',513 'aria-selected'514 ],515 superclassRole: ['cell', 'gridcell', 'sectionhead'],516 // Note: spec difference517 accessibleNameRequired: false,518 nameFromContent: true519 },520 scrollbar: {521 type: 'widget',522 requiredAttrs: ['aria-valuenow'],523 // Note: since the scrollbar role has implicit524 // aria-orientation, aria-valuemax, aria-valuemin values it525 // is not required to be added by the user526 //527 // Note: because aria-controls is not well supported we will not528 // make it a required attribute even though it is required in the529 // spec530 allowedAttrs: [531 'aria-controls',532 'aria-orientation',533 'aria-valuemax',534 'aria-valuemin',535 'aria-valuetext'536 ],537 superclassRole: ['range']538 },539 search: {540 type: 'landmark',541 allowedAttrs: ['aria-expanded'],542 superclassRole: ['landmark']543 },544 searchbox: {545 type: 'widget',546 allowedAttrs: [547 'aria-activedescendant',548 'aria-autocomplete',549 'aria-multiline',550 'aria-placeholder',551 'aria-readonly',552 'aria-required'553 ],554 superclassRole: ['textbox'],555 accessibleNameRequired: true556 },557 section: {558 type: 'abstract',559 superclassRole: ['structure'],560 // Note: spec difference561 nameFromContent: true562 },563 sectionhead: {564 type: 'abstract',565 superclassRole: ['structure'],566 // Note: spec difference567 nameFromContent: true568 },569 select: {570 type: 'abstract',571 superclassRole: ['composite', 'group']572 },573 separator: {574 type: 'structure',575 // Note: since the separator role has implicit576 // aria-orientation, aria-valuemax, aria-valuemin, and577 // aria-valuenow values it is not required to be added by578 // the user579 allowedAttrs: [580 'aria-valuemax',581 'aria-valuemin',582 'aria-valuenow',583 'aria-orientation',584 'aria-valuetext'585 ],586 superclassRole: ['structure', 'widget']587 },588 slider: {589 type: 'widget',590 requiredAttrs: ['aria-valuenow'],591 // Note: since the slider role has implicit592 // aria-orientation, aria-valuemax, aria-valuemin values it593 // is not required to be added by the user594 allowedAttrs: [595 'aria-valuemax',596 'aria-valuemin',597 'aria-orientation',598 'aria-readonly',599 'aria-valuetext'600 ],601 superclassRole: ['input', 'range'],602 accessibleNameRequired: true603 },604 spinbutton: {605 type: 'widget',606 requiredAttrs: ['aria-valuenow'],607 // Note: since the spinbutton role has implicit608 // aria-orientation, aria-valuemax, aria-valuemin values it609 // is not required to be added by the user610 allowedAttrs: [611 'aria-valuemax',612 'aria-valuemin',613 'aria-readonly',614 'aria-required',615 'aria-activedescendant',616 'aria-valuetext'617 ],618 superclassRole: ['composite', 'input', 'range'],619 accessibleNameRequired: true620 },621 status: {622 type: 'widget',623 allowedAttrs: ['aria-expanded'],624 superclassRole: ['section']625 },626 strong: {627 type: 'structure',628 superclassRole: ['section']629 },630 structure: {631 type: 'abstract',632 superclassRole: ['roletype']633 },634 subscript: {635 type: 'structure',636 superclassRole: ['section']637 },638 superscript: {639 type: 'structure',640 superclassRole: ['section']641 },642 switch: {643 type: 'widget',644 requiredAttrs: ['aria-checked'],645 allowedAttrs: ['aria-readonly'],646 superclassRole: ['checkbox'],647 accessibleNameRequired: true,648 nameFromContent: true649 },650 tab: {651 type: 'widget',652 requiredContext: ['tablist'],653 allowedAttrs: [654 'aria-posinset',655 'aria-selected',656 'aria-setsize',657 'aria-expanded'658 ],659 superclassRole: ['sectionhead', 'widget'],660 nameFromContent: true661 },662 table: {663 type: 'structure',664 requiredOwned: ['rowgroup', 'row'],665 allowedAttrs: ['aria-colcount', 'aria-rowcount', 'aria-expanded'],666 // NOTE: although the spec says this is not named from contents,667 // the accessible text acceptance tests (#139 and #140) require668 // table be named from content (we even had to special case669 // table in commons/aria/named-from-contents)670 superclassRole: ['section'],671 // Note: spec difference672 accessibleNameRequired: false,673 nameFromContent: true674 },675 tablist: {676 type: 'composite',677 requiredOwned: ['tab'],678 // NOTE: aria-expanded is from the 1.0 spec but is still679 // consistently supported in ATs680 allowedAttrs: [681 'aria-level',682 'aria-multiselectable',683 'aria-orientation',684 'aria-activedescendant',685 'aria-expanded'686 ],687 superclassRole: ['composite']688 },689 tabpanel: {690 type: 'widget',691 allowedAttrs: ['aria-expanded'],692 superclassRole: ['section'],693 // Note: spec difference694 accessibleNameRequired: false695 },696 term: {697 type: 'structure',698 allowedAttrs: ['aria-expanded'],699 superclassRole: ['section'],700 // Note: spec difference701 nameFromContent: true702 },703 textbox: {704 type: 'widget',705 allowedAttrs: [706 'aria-activedescendant',707 'aria-autocomplete',708 'aria-multiline',709 'aria-placeholder',710 'aria-readonly',711 'aria-required'712 ],713 superclassRole: ['input'],714 accessibleNameRequired: true715 },716 time: {717 type: 'structure',718 superclassRole: ['section']719 },720 timer: {721 type: 'widget',722 allowedAttrs: ['aria-expanded'],723 superclassRole: ['status']724 },725 toolbar: {726 type: 'structure',727 allowedAttrs: [728 'aria-orientation',729 'aria-activedescendant',730 'aria-expanded'731 ],732 superclassRole: ['group'],733 accessibleNameRequired: true734 },735 tooltip: {736 type: 'structure',737 allowedAttrs: ['aria-expanded'],738 superclassRole: ['section'],739 nameFromContent: true740 },741 tree: {742 type: 'composite',743 requiredOwned: ['treeitem'],744 allowedAttrs: [745 'aria-multiselectable',746 'aria-required',747 'aria-activedescendant',748 'aria-expanded',749 'aria-orientation'750 ],751 superclassRole: ['select'],752 // Note: spec difference753 accessibleNameRequired: false754 },755 treegrid: {756 type: 'composite',757 requiredOwned: ['rowgroup', 'row'],758 allowedAttrs: [759 'aria-activedescendant',760 'aria-colcount',761 'aria-expanded',762 'aria-level',763 'aria-multiselectable',764 'aria-orientation',765 'aria-readonly',766 'aria-required',767 'aria-rowcount'768 ],769 superclassRole: ['grid', 'tree'],770 // Note: spec difference771 accessibleNameRequired: false772 },773 treeitem: {774 type: 'widget',775 requiredContext: ['group', 'tree'],776 allowedAttrs: [777 'aria-checked',778 'aria-expanded',779 'aria-level',780 'aria-posinset',781 'aria-selected',782 'aria-setsize'783 ],784 superclassRole: ['listitem', 'option'],785 accessibleNameRequired: true,786 nameFromContent: true787 },788 widget: {789 type: 'abstract',790 superclassRole: ['roletype']791 },792 window: {793 type: 'abstract',794 superclassRole: ['roletype']795 }796};...
ReactFiberHostContext.js
Source:ReactFiberHostContext.js
...36 );37 return (c: any);38}39function getRootHostContainer(): Container {40 const rootInstance = requiredContext(rootInstanceStackCursor.current);41 return rootInstance;42}43function pushHostContainer(fiber: Fiber, nextRootInstance: Container) {44 // Push current root instance onto the stack;45 // This allows us to reset root when portals are popped.46 push(rootInstanceStackCursor, nextRootInstance, fiber);47 // Track the context and the Fiber that provided it.48 // This enables us to pop only Fibers that provide unique contexts.49 push(contextFiberStackCursor, fiber, fiber);50 // Finally, we need to push the host context to the stack.51 // However, we can't just call getRootHostContext() and push it because52 // we'd have a different number of entries on the stack depending on53 // whether getRootHostContext() throws somewhere in renderer code or not.54 // So we push an empty value first. This lets us safely unwind on errors.55 push(contextStackCursor, NO_CONTEXT, fiber);56 const nextRootContext = getRootHostContext(nextRootInstance);57 // Now that we know this function doesn't throw, replace it.58 pop(contextStackCursor, fiber);59 push(contextStackCursor, nextRootContext, fiber);60}61function popHostContainer(fiber: Fiber) {62 pop(contextStackCursor, fiber);63 pop(contextFiberStackCursor, fiber);64 pop(rootInstanceStackCursor, fiber);65}66function getHostContext(): HostContext {67 const context = requiredContext(contextStackCursor.current);68 return context;69}70function pushHostContext(fiber: Fiber): void {71 const rootInstance: Container = requiredContext(72 rootInstanceStackCursor.current,73 );74 const context: HostContext = requiredContext(contextStackCursor.current);75 const nextContext = getChildHostContext(context, fiber.type, rootInstance);76 // Don't push this Fiber's context unless it's unique.77 if (context === nextContext) {78 return;79 }80 // Track the context and the Fiber that provided it.81 // This enables us to pop only Fibers that provide unique contexts.82 push(contextFiberStackCursor, fiber, fiber);83 push(contextStackCursor, nextContext, fiber);84}85function pushHostContextForEventComponent(fiber: Fiber): void {86 const context: HostContext = requiredContext(contextStackCursor.current);87 const nextContext = getChildHostContextForEventComponent(context);88 // Don't push this Fiber's context unless it's unique.89 if (context === nextContext) {90 return;91 }92 // Track the context and the Fiber that provided it.93 // This enables us to pop only Fibers that provide unique contexts.94 push(contextFiberStackCursor, fiber, fiber);95 push(contextStackCursor, nextContext, fiber);96}97function pushHostContextForEventTarget(fiber: Fiber): void {98 const context: HostContext = requiredContext(contextStackCursor.current);99 const eventTargetType = fiber.type.type;100 const nextContext = getChildHostContextForEventTarget(101 context,102 eventTargetType,103 );104 // Don't push this Fiber's context unless it's unique.105 if (context === nextContext) {106 return;107 }108 // Track the context and the Fiber that provided it.109 // This enables us to pop only Fibers that provide unique contexts.110 push(contextFiberStackCursor, fiber, fiber);111 push(contextStackCursor, nextContext, fiber);112}...
required-parent.js
Source:required-parent.js
...7 length,8 role = virtualNode.actualNode.getAttribute('role'),9 missing = [];10 if (!requiredContext) {11 requiredContext = axe.commons.aria.requiredContext(role);12 }13 if (!requiredContext) {14 return null;15 }16 for (index = 0, length = requiredContext.length; index < length; index++) {17 if (18 includeElement &&19 axe.utils.matchesSelector(20 virtualNode.actualNode,21 getSelector(requiredContext[index])22 )23 ) {24 return null;25 }...
index.js
Source:index.js
1const EngineBase = require('../base');2const RegexIntent = require('./intent');3class EngineRegex extends EngineBase {4 constructor() {5 super();6 this.regexClasses = [];7 }8 mountIntent(klass) {9 if(this.extendsKlass(klass, RegexIntent)){10 this.regexClasses.push(klass);11 }12 }13 match(message, user, context){14 return this.regexClasses.find( (klass) => {15 if(klass.requiredContext){16 if(!context){17 return;18 }19 if(klass.requiredContext && !klass.requiredContext.includes(context.lastMessage)){20 return;21 }22 }23 if(klass.regex instanceof Array){24 return klass.regex.find( (regex) => {25 return message.text.match(regex);26 });27 }28 return message.text.match(klass.regex);29 });30 }31}...
required-context.js
Source:required-context.js
...6 * @instance7 * @param {String} role The role to check8 * @return {Mixed} Either an Array of required context elements or `null` if there are none9 */10function requiredContext(role) {11 const roleDef = standards.ariaRoles[role];12 if (!roleDef || !Array.isArray(roleDef.requiredContext)) {13 return null;14 }15 return [...roleDef.requiredContext];16}...
requireAll.js
Source:requireAll.js
1export const requireAll = (requiredContext) => {2 return requiredContext.keys().map(requiredContext);...
Using AI Code Generation
1const { chromium } = require('playwright');2const path = require('path');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const requiredContext = await page.context().requiredContext();8 const requiredPage = await requiredContext.newPage();9 await requiredPage.close();10 await browser.close();11})();12async requiredContext(): Promise<BrowserContext>13const { chromium } = require('playwright');14const path = require('path');15(async () => {16 const browser = await chromium.launch();17 const context = await browser.newContext();18 const page = await context.newPage();19 const requiredContext = await page.context().requiredContext();20 const requiredPage = await requiredContext.newPage();21 await requiredPage.close();22 await browser.close();23})();24async requiredPage(): Promise<Page>
Using AI Code Generation
1const path = require('path');2const playwright = require('playwright');3const { test } = require('@playwright/test');4test('test', async ({ page }) => {5 const requiredContext = page.context();6 const requiredContextPath = requiredContext._browser._executablePath;7 console.log(requiredContextPath);8});9const path = require('path');10const playwright = require('playwright');11const { test } = require('@playwright/test');12test('test', async ({ page }) => {13 const requiredContext = page.context();14 const requiredContextPath = requiredContext._browser._executablePath;15 console.log(requiredContextPath);16});
Using AI Code Generation
1const { test } = require('@playwright/test');2const path = require('path');3test.describe('test', () => {4 test('test', async ({ page }) => {5 await page.screenshot({ path: 'google.png' });6 const context = page.context();7 const requireContext = context._requireContext;8 const requiredModule = requireContext(path.join(__dirname, 'test.js'));9 console.log(requiredModule);10 });11});12Note: I have already tried using the test.fixtures() method to require a module from a path relative to the test file. But it did not work. I get the following error:
Using AI Code Generation
1const { Playwright } = require('playwright');2const path = require('path');3const fs = require('fs');4const playwright = new Playwright();5const { chromium } = playwright;6const browser = await chromium.launch();7const context = await browser.newContext();8const page = await context.newPage();9const requiredContext = await page.requiredContext();10console.log(requiredContext);11await browser.close();12async requiredContext() {13 const context = await this.page.requiredContext();14 return context;15}
Using AI Code Generation
1const { Playwright } = require('playwright');2const playwright = new Playwright();3const { BrowserType } = require('playwright-core/lib/server/browserType');4const { BrowserContext } = require('playwright-core/lib/server/browserContext');5const { Page } = require('playwright-core/lib/server/page');6const { Resource } = require('playwright-core/lib/server/network');7const { Frame } = require('playwright-core/lib/server/frames');8const { ElementHandle } = require('playwright-core/lib/server/dom');9const { JSHandle } = require('playwright-core/lib/server/javascript');10const { ConsoleMessage } = require('playwright-core/lib/server/console');11const { Dialog } = require('playwright-core/lib/server/dialog');12const { Worker } = require('playwright-core/lib/server/worker');13const { getTestState } = require('@playwright/test');14const { test } = require('@playwright/test');15test('test', async ({ page }) => {16 const requiredContext = getTestState(page).context;17 console.log(requiredContext);18});19const { test, expect } = require('@playwright/test');20test('test', async ({ page }) => {21 const requiredContext = getTestState(page).context;22 console.log(requiredContext);23});24BrowserContext {25 _browser: Browser {26 _playwright: Playwright {27 _launcher: Launcher {
Using AI Code Generation
1const { test } = require('@playwright/test');2test.describe('test', () => {3 test('test', async ({ page }) => {4 const context = page.context();5 const requiredContext = context._browser._requiredContext;6 const newContext = await requiredContext.newContext();7 await newContext.close();8 });9});10import { PlaywrightTestConfig } from '@playwright/test';11const config: PlaywrightTestConfig = {12 use: {13 viewport: { width: 1280, height: 720 },14 },15};16export default config;17 at CDPSession.send (C:\Users\user\AppData\Roaming\npm\node_modules\playwright\lib\client\cdpSession.js:126:19)18 at CDPSession.sendMayFail (C:\Users\user\AppData\Roaming\npm\node_modules\playwright\lib\client\cdpSession.js:65:17)19 at async CDPSession.send (C:\Users\user\AppData\Roaming\npm\node_modules\playwright\lib\client\cdpSession.js:126:19)20 at async CDPSession.sendMayFail (C:\Users\user\AppData\Roaming\npm\node_modules\playwright\lib\client\cdpSession.js:65:17)21 at async CDPSession.send (C:\Users\user\AppData\Roaming\npm\node_modules\playwright\lib\client\cdpSession.js:126:19)22 at async CDPSession.sendMayFail (C:\Users\user\AppData\Roaming\npm\node_modules\playwright\lib\client\cdpSession.js:65:17)23 at async CDPSession.send (C:\Users\user\AppData\Roaming\npm\node_modules\playwright\lib\client\cdpSession.js:126:19)24 at async CDPSession.sendMayFail (C:\Users\user\AppData\Roaming\npm\node_modules\playwright\lib\client\cdpSession.js:65:17)
Using AI Code Generation
1const { InternalApi } = require('@playwright/test');2const { test, expect } = require('@playwright/test');3const { chromium } = require('playwright');4const { chromium } = require('playwright');5test('test', async ({ page }) => {6 const requiredContext = await InternalApi.requiredContext();7 const browser = requiredContext.browser;8 const context = requiredContext.context;9 const newPage = await context.newPage();10 expect(await newPage.title()).toBe('Playwright');11});12const { InternalApi } = require('@playwright/test');13const { test, expect } = require('@playwright/test');14const { chromium } = require('playwright');15const { chromium } = require('playwright');16test('test', async ({ page }) => {17 const requiredContext = await InternalApi.requiredContext();18 const browser = requiredContext.browser;19 const context = requiredContext.context;20 const newPage = await context.newPage();21 expect(await newPage.title()).toBe('Playwright');22});23import { InternalApi } from '@playwright/test';24import { test, expect } from '@playwright/test';25import { chromium } from 'playwright';26import { chromium } from 'playwright';27test('test', async ({ page }) => {28 const requiredContext = await InternalApi.requiredContext();29 const browser = requiredContext.browser;30 const context = requiredContext.context;31 const newPage = await context.newPage();32 expect(await newPage.title()).toBe('Playwright');33});34import { InternalApi } from '@playwright/test';35import { test, expect } from '@playwright/test';36import { chromium } from 'playwright';37import { chromium } from 'playwright';38test('test', async ({ page }) => {
Using AI Code Generation
1const { testInfo } = require('@playwright/test');2const { context } = testInfo;3const page = await context.newPage();4const { testInfo } = require('@playwright/test');5const { context } = testInfo;6const page = await context.newPage();7const { testInfo } = require('@playwright/test');8const { context } = testInfo;9const page = await context.newPage();10const { testInfo } = require('@playwright/test');11const { context } = testInfo;12const page = await context.newPage();13const { testInfo } = require('@playwright/test');14const { context } = testInfo;15const page = await context.newPage();16const { testInfo } = require('@playwright/test');17const { context } = testInfo;18const page = await context.newPage();19const { testInfo } = require('@playwright/test');20const { context } = testInfo;21const page = await context.newPage();22const { testInfo } = require('@playwright/test');23const { context } = testInfo;24const page = await context.newPage();25const { testInfo } = require('@playwright/test');26const { context } = testInfo;27const page = await context.newPage();28const { testInfo } = require('@playwright/test');29const { context } = test
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.
Get 100 minutes of automation test minutes FREE!!