Best JavaScript code snippet using playwright-internal
traverse.js
Source:traverse.js
...106 type: 'block',107 attr: {108 [prefix + 'if']: genCode(conditionalExprNode.test)109 },110 children: normalizeChildren(111 traverseExpr(conditionalExprNode.consequent, state)112 )113 }]114 if (115 !(116 t.isCallExpression(conditionalExprNode.alternate) &&117 t.isIdentifier(conditionalExprNode.alternate.callee) &&118 conditionalExprNode.alternate.callee.name === '_e'119 )120 ) {121 // test?_c():_e()122 ret.push({123 type: 'block',124 attr: {125 [prefix + 'else']: ''126 },127 children: normalizeChildren(128 traverseExpr(conditionalExprNode.alternate, state)129 )130 })131 }132 return ret133}134135function traverseCreateElement (callExprNode, state) {136 const args = callExprNode.arguments137 const tagNode = args[0]138 if (!t.isStringLiteral(tagNode)) {139 throw new Error(`æä¸æ¯æå¨æç»ä»¶[${tagNode.name}]`)140 }141142 const node = {143 type: tagNode.value,144 attr: {},145 children: []146 }147148 if (args.length < 2) {149 return node150 }151152 const dataNodeOrChildNodes = args[1]153 if (t.isObjectExpression(dataNodeOrChildNodes)) {154 Object.assign(node.attr, traverseDataNode(dataNodeOrChildNodes, state, node))155 } else {156 node.children = normalizeChildren(traverseExpr(dataNodeOrChildNodes, state))157 }158 if (args.length < 3) {159 return node160 }161 const childNodes = args[2]162 if (!t.isNumericLiteral(childNodes)) {163 if (node.children && node.children.length) {164 node.children = node.children.concat(normalizeChildren(traverseExpr(childNodes, state)))165 } else {166 node.children = normalizeChildren(traverseExpr(childNodes, state))167 }168 }169 return node170}171172function traverseDataNode (dataNode, state, node) {173 const ret = {}174 const specialEvents = state.options.platform.specialEvents[node.type] || {}175 const specialEventNames = Object.keys(specialEvents)176 dataNode.properties.forEach(property => {177 switch (property.key.name) {178 case 'slot':179 ret['slot'] = genCode(property.value)180 break181 case 'scopedSlots': // Vue 2.6182 property.value.$node = node183 node.children = normalizeChildren(traverseExpr(property.value, state))184 break185 case 'attrs':186 case 'domProps':187 case 'on':188 case 'nativeOn':189 property.value.properties.forEach(attrProperty => {190 if (attrProperty.key.value === 'vue-id') { // initParent æ¶åå¤ç vue-id191 node.$vueId = attrProperty.value192 ret[attrProperty.key.value] = genCode(attrProperty.value)193 } else {194 if (specialEventNames.includes(attrProperty.key.value)) {195 if (t.isIdentifier(attrProperty.value)) {196 ret[specialEvents[attrProperty.key.value]] = attrProperty.value.name197 }198 } else {199 ret[attrProperty.key.value] = genCode(attrProperty.value)200 }201 }202 })203 break204 case 'class':205 case 'staticClass':206 ret['class'] = genCode(property.value)207 break208 case 'style':209 case 'staticStyle':210 ret['style'] = genCode(property.value)211 break212 case 'directives':213 property.value.elements.find(objectExpression => {214 if (t.isObjectExpression(objectExpression)) {215 const nameProperty = objectExpression.properties[0]216 const isShowDir =217 nameProperty &&218 nameProperty.key.name === 'name' &&219 t.isStringLiteral(nameProperty.value) &&220 nameProperty.value.value === 'show'221 if (isShowDir) {222 objectExpression.properties.find(valueProperty => {223 const isValue = valueProperty.key.name === 'value'224 if (isValue) {225 ret['hidden'] = genCode(valueProperty.value, false, true)226 }227 return isValue228 })229 }230 return isShowDir231 }232 })233 break234 }235 })236 return ret237}238239function normalizeChildren (nodes) {240 if (!Array.isArray(nodes)) {241 nodes = [nodes]242 }243 return nodes.filter(node => {244 if (typeof node === 'string' && !node.trim()) {245 return false246 }247 return true248 })249}250251function traverseArrayExpression (arrayExprNodes, state) {252 return arrayExprNodes.elements.reduce((nodes, exprNode) => {253 return nodes.concat(traverseExpr(exprNode, state))254 }, [])255}256257function genSlotNode (slotName, slotNode, fallbackNodes, state) {258 if (!fallbackNodes || t.isNullLiteral(fallbackNodes)) {259 return slotNode260 }261 const prefix = state.options.platform.prefix262 return [{263 type: 'block',264 attr: {265 [prefix + 'if']: '{{$slots.' + slotName + '}}'266 },267 children: [slotNode]268 }, {269 type: 'block',270 attr: {271 [prefix + 'else']: ''272 },273 children: normalizeChildren(274 traverseExpr(fallbackNodes, state)275 )276 }]277}278279function traverseRenderSlot (callExprNode, state) {280 if (!t.isStringLiteral(callExprNode.arguments[0])) {281 state.errors.add(`v-slot ä¸æ¯æå¨ææ槽å`)282 return283 }284285 const slotName = callExprNode.arguments[0].value286287 let deleteSlotName = false // æ è®°æ¯å¦ç»ä»¶ slot æå¨æå®äº name="default"288 if (callExprNode.arguments.length > 2) { // ä½ç¨åæ槽289 const props = {}290 callExprNode.arguments[2].properties.forEach(property => {291 props[property.key.value] = genCode(property.value)292 })293 deleteSlotName = props['SLOT_DEFAULT'] && Object.keys(props).length === 1294 if (!deleteSlotName) {295 delete props['SLOT_DEFAULT']296 return genSlotNode(297 slotName,298 state.options.platform.createScopedSlots(slotName, props, state),299 callExprNode.arguments[1],300 state301 )302 }303 }304305 const node = {306 type: 'slot',307 attr: {308 name: slotName309 },310 children: []311 }312313 if (deleteSlotName) {314 delete node.attr.name315 }316317 return genSlotNode(slotName, node, callExprNode.arguments[1], state)318}319320function traverseResolveScopedSlots (callExprNode, state) {321 return callExprNode.arguments[0].elements.map(slotNode => {322 let keyProperty = false323 let fnProperty = false324 let proxyProperty = false325 slotNode.properties.forEach(property => {326 switch (property.key.name) {327 case 'key':328 keyProperty = property329 break330 case 'fn':331 fnProperty = property332 break333 case 'proxy':334 proxyProperty = property335 }336 })337 const slotName = keyProperty.value.value338 const returnExprNodes = fnProperty.value.body.body[0].argument339 if (!proxyProperty) {340 const resourcePath = state.options.resourcePath341 const ownerName = path.basename(resourcePath, path.extname(resourcePath))342343 const parentNode = callExprNode.$node344 const parentName = parentNode.type345346 const paramExprNode = fnProperty.value.params[0]347 return state.options.platform.resolveScopedSlots(348 slotName, {349 genCode,350 generate,351 ownerName,352 parentName,353 parentNode,354 resourcePath,355 paramExprNode,356 returnExprNodes,357 traverseExpr,358 normalizeChildren359 },360 state361 )362 }363 const node = {364 type: 'view',365 attr: {366 slot: slotName367 },368 children: normalizeChildren(traverseExpr(returnExprNodes, state))369 }370 return node371 })372}373374function traverseRenderList (callExprNode, state) {375 const params = callExprNode.arguments[1].params376 const forItem = params.length > 0 ? params[0].name : 'item'377 const forIndex = params.length > 1 ? params[1].name : ''378379 const forReturnStatementArgument =380 callExprNode.arguments[1].body.body[0].argument381382 const forKey = traverseKey(forReturnStatementArgument, state)383384 const prefix = state.options.platform.prefix385386 const attr = {387 [prefix + 'for']: genCode(callExprNode.arguments[0]),388 [prefix + 'for-item']: forItem389 }390391 if (forIndex) {392 attr[prefix + 'for-index'] = forIndex393 }394395 if (forKey) {396 const key = getForKey(forKey, forIndex, state)397 if (key) {398 attr[prefix + 'key'] = key399 }400 }401402 return {403 type: 'block',404 attr,405 children: normalizeChildren(traverseExpr(forReturnStatementArgument, state))406 }407}408409function getLeftStringLiteral (expr) {410 if (t.isBinaryExpression(expr) && !expr.$toString) {411 return getLeftStringLiteral(expr.left)412 } else if (t.isStringLiteral(expr)) {413 return expr414 }415}416417function trim (text, type) {418 // TODO ä¿çæ¢è¡ç¬¦ï¼419 if (type === 'left') {
...
Table.js
Source:Table.js
...33 </td>34 );35};36const TableRow = ({ className, children, ...rest }) => {37 const cells = normalizeChildren(children).filter(item => item.type && item.type.name && TableCell.name === item.type.name);38 return (39 <tr 40 className={className}41 style={combineStyles(rest, rest.style)}42 {...omitProps(rest)}43 >44 {cells}45 </tr>46 );47};48const TableHead = ({ className, children, ...rest }) => {49 const headItems = normalizeChildren(children).filter(item => item.type && item.type.name && TableRow.name === item.type.name);50 return (51 <thead 52 className={className}53 style={combineStyles(rest, rest.style)}54 {...omitProps(rest)}55 >56 {headItems}57 </thead>58 );59};60const TableBody = ({ className, children, ...rest }) => {61 const bodyItems = normalizeChildren(children).filter(item => item.type && item.type.name && TableRow.name === item.type.name);62 return (63 <tbody 64 className={className}65 style={combineStyles(rest, rest.style)}66 {...omitProps(rest)}67 >68 {bodyItems}69 </tbody>70 );71};72const Table = ({73 tableStyle = 'none',74 className,75 children,76 ...rest77}) => {78 const tableItems = normalizeChildren(children).filter(item => item.type && item.type.name && (TableHead.name === item.type.name || TableBody.name === item.type.name || TableCaption.name === item.type.name));79 let classNames = [tableStyle !== 'none' ? tableStyle : '', className];80 return (81 <table 82 className={combineClassNames(classNames)}83 style={combineStyles(rest, rest.style)}84 {...omitProps(rest)}85 >86 {tableItems}87 </table>88 );89};...
test-normalizeChildren.js
Source:test-normalizeChildren.js
2var o = require("ospec")3var Vnode = require("../lib/vnode")4o.spec("normalizeChildren", function() {5 o("normalizes arrays into fragments", function() {6 var children = Vnode.normalizeChildren([[]])7 o(children[0].tag).equals("[")8 o(children[0].children.length).equals(0)9 })10 o("normalizes strings into text nodes", function() {11 var children = Vnode.normalizeChildren(["a"])12 o(children[0].tag).equals("#")13 o(children[0].children).equals("a")14 })15 o("normalizes `false` values into `null`s", function() {16 var children = Vnode.normalizeChildren([false])17 o(children[0]).equals(null)18 })19 o("allows all keys", function() {20 var children = Vnode.normalizeChildren([21 {key: 1},22 {key: 2},23 ])24 o(children).deepEquals([{key: 1}, {key: 2}])25 })26 o("allows no keys", function() {27 var children = Vnode.normalizeChildren([28 {data: 1},29 {data: 2},30 ])31 o(children).deepEquals([{data: 1}, {data: 2}])32 })33 o("disallows mixed keys, starting with key", function() {34 o(function() {35 Vnode.normalizeChildren([36 {key: 1},37 {data: 2},38 ])39 }).throws(TypeError)40 })41 o("disallows mixed keys, starting with no key", function() {42 o(function() {43 Vnode.normalizeChildren([44 {data: 1},45 {key: 2},46 ])47 }).throws(TypeError)48 })...
normalizeChildren.js
Source:normalizeChildren.js
2Object.defineProperty(exports, "__esModule", { value: true });3exports.normalizeChildren = void 0;4const TextNode_1 = require("../TextNode");5const constants_1 = require("../../constants");6function normalizeChildren(children) {7 const result = [];8 for (const child of children) {9 if (child && typeof child !== 'boolean') {10 if (typeof child === 'string' || typeof child === 'number') {11 result.push(new TextNode_1.TextNode(`${child}`));12 }13 else if (Array.isArray(child)) {14 normalizeChildren(child).forEach(normalized => result.push(normalized));15 }16 else if (child.type === constants_1.NODE_TYPE.ELEMENT || child.type === constants_1.NODE_TYPE.TEXT || child.type === constants_1.NODE_TYPE.COMPONENT) {17 result.push(child);18 }19 else {20 throw new TypeError(`Unrecognized node type: ${typeof child}`);21 }22 }23 }24 return result;25}...
tree.controller.js
Source:tree.controller.js
...13 self.rootTreeNodes = normalizeTreeNodeData(options.data, options);14 self.nodeTemplateUrl = options.nodeTemplateUrl || "{themed}/widget/default-tree-node-tpl.html";15 }16 function normalizeTreeNodeData(data){17 normalizeChildren(data);18 return data;19 function normalizeChildren(children){20 for(var i =0;i<children.length; i++){21 var node = children[i];22 node.hasChildren = isArray(node.children) && node.children.length > 0;23 if(node.hasChildren){24 normalizeChildren(node.children);25 }26 }27 }28 }29 }...
create-element.js
Source:create-element.js
...19 normalizationType = children20 children = data21 data = undefined22 }23 args[childrenIndex] = normalizeChildren(children)24}25function normalizeChildren (children = []) {26 let res = []27 for (let i = 0, len = children.length; i < len; i++) {28 const child = children[i]29 if (Array.isArray(child)) {30 res = res.concat(normalizeChildren(child))31 } else if (child) {32 res.push(child)33 }34 }35 return res...
vnode.js
Source:vnode.js
2function Vnode(tag, key, attrs, children, text, dom) {3 return {tag: tag, key: key, attrs: attrs, children: children, text: text, dom: dom, domSize: undefined, state: undefined, _state: undefined, events: undefined, instance: undefined, skip: false}4}5Vnode.normalize = function(node) {6 if (Array.isArray(node)) return Vnode("[", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)7 if (node != null && typeof node !== "object") return Vnode("#", undefined, undefined, node === false ? "" : node, undefined, undefined)8 return node9}10Vnode.normalizeChildren = function normalizeChildren(children) {11 for (var i = 0; i < children.length; i++) {12 children[i] = Vnode.normalize(children[i])13 }14 return children15}...
26test-normalizeChildren.js
Source:26test-normalizeChildren.js
2var o = require("../../ospec/ospec")3var Vnode = require("../../render/vnode")4o.spec("normalizeChildren", function() {5 o("normalizes arrays into fragments", function() {6 var children = Vnode.normalizeChildren([[]])7 o(children[0].tag).equals("[")8 o(children[0].children.length).equals(0)9 })10 o("normalizes strings into text nodes", function() {11 var children = Vnode.normalizeChildren(["a"])12 o(children[0].tag).equals("#")13 o(children[0].children).equals("a")14 })15 o("normalizes `false` values into empty string text nodes", function() {16 var children = Vnode.normalizeChildren([false])17 o(children[0].tag).equals("#")18 o(children[0].children).equals("")19 })...
Using AI Code Generation
1const { normalizeChildren } = require('playwright/lib/server/frames');2const { ElementHandle } = require('playwright/lib/server/dom');3const { Page } = require('playwright/lib/server/page');4const { Frame } = require('playwright/lib/server/frames');5const elementHandle = new ElementHandle(new Page(new Frame(null, null)), null, null);6const children = [1, 2, 3];7console.log(normalizeChildren(elementHandle, children));
Using AI Code Generation
1const { normalizeChildren } = require('playwright/lib/server/dom.js');2const { parseFragment } = require('playwright/lib/server/dom.js');3const { parseDocument } = require('playwright/lib/server/dom.js');4const { serializeNode } = require('playwright/lib/server/dom.js');5</html>`;6const document = parseDocument(html);7const node = document.querySelector('#test4');8const children = node.childNodes;9const normalized = normalizeChildren(children);10const serialized = serializedNode(normalized);11console.log(serialized);12const { normalizeChildren } = require('playwright/lib/server/dom.js');13const { parseFragment } = require('playwright/lib/server/dom.js');14const { parseDocument } = require('playwright/lib/server/dom.js');15const { serializeNode } = require('playwright/lib/server/dom.js');
Using AI Code Generation
1const { normalizeChildren } = require('playwright/lib/client/selectorEngine');2const { parseSelector } = require('playwright/lib/client/selectorParser');3const { parseSelectorToSteps } = require('playwright/lib/client/selectorParser');4const { Selector } = require('playwright/lib/client/selector');5const { parseSelectorToSteps } = require('playwright/lib/client/selectorParser');6const { normalizeChildren } = require('playwright/lib/client/selectorEngine');7const { parseSelector } = require('playwright/lib/client/selectorParser');8const { parseSelectorToSteps } = require('playwright/lib/client/selectorParser');9const { Selector } = require('playwright/lib/client/selector');10const { parseSelectorToSteps } = require('playwright/lib/client/selectorParser');11const { normalizeChildren } = require('playwright/lib/client/selectorEngine');12const { parseSelector } = require('playwright/lib/client/selectorParser');13const { parseSelectorToSteps } = require('playwright/lib/client/selectorParser');14const { Selector } = require('playwright/lib/client/selector');15const { parseSelectorToSteps } = require('playwright/lib/client/selectorParser');16const { normalizeChildren } = require('playwright/lib/client/selectorEngine');17const { parseSelector } = require('playwright/lib/client/selectorParser');18const { parseSelectorToSteps } = require('playwright/lib/client/selectorParser');19const { Selector } = require('playwright/lib/client/selector');20const { parseSelectorToSteps } = require('playwright/lib/client/selectorParser');21const { normalizeChildren } = require('playwright/lib/client/selectorEngine');22const { parseSelector } = require('playwright/lib/client/selectorParser');23const { parseSelectorToSteps } = require('playwright/lib/client/selectorParser');24const { Selector } = require('playwright/lib/client/selector');25const { parseSelectorToSteps } = require('playwright/lib/client/selectorParser');26const { normalizeChildren } = require('playwright/lib/client/selectorEngine');27const { parseSelector } =
Using AI Code Generation
1const { normalizeChildren } = require('playwright/lib/server/dom.js');2const { parseFragment } = require('playwright/lib/server/dom.js');3const { dom } = require('playwright/lib/server/dom.js');4const { ElementHandle } = require('playwright/lib/server/dom.js');5const { JSHandle } = require('playwright/lib/server/dom.js');6const { Frame } = require('playwright/lib/server/dom.js');7const domImpl = new dom.DOMImplementation();8const doc = domImpl.createHTMLDocument('Title');9const fragment = parseFragment(doc, '<div><di
Using AI Code Generation
1const { normalizeChildren } = require('playwright/lib/client/selectorEngine');2const { parseSelector } = require('playwright/lib/client/selectorParser');3const selector = 'css=div >> text=hello';4const parsedSelector = parseSelector(selector);5const normalizedChildren = normalizeChildren(parsedSelector);6console.log(normalizedChildren);7 { name: 'css', body: 'div' },8 { name: 'text', body: 'hello', args: undefined }9const { normalizeChildren } = require('playwright/lib/client/selectorEngine');10const { parseSelector } = require('playwright/lib/client/selectorParser');11const selector = 'css=div >> text=hello';12const parsedSelector = parseSelector(selector);13const normalizedChildren = normalizeChildren(parsedSelector);14console.log(normalizedChildren);15const playwright = require('playwright');16(async () => {17 for (const browserType of ['chromium']) {18 const browser = await playwright[browserType].launch();19 const context = await browser.newContext();20 const page = await context.newPage();21 const elementHandle = await page.$(selector);22 await elementHandle.click();23 await browser.close();24 }25})();
Using AI Code Generation
1const { normalizeChildren } = require('playwright/lib/server/dom.js');2const { parse } = require('playwright/lib/server/supplements/utils/parseMarkup.js');3const html = `<div style="color: red">Hello</div><div style="color: blue">World</div>`;4const children = parse(html);5const normalizedChildren = normalizeChildren(children);6console.log(normalizedChildren);7{ style: 'color: red' }8[{ nodeType: 3, nodeName: '#text', nodeValue: 'Hello' }]
Using AI Code Generation
1const { normalizeChildren } = require('@playwright/test/lib/test');2const children = normalizeChildren([3 {4 fn: async ({}) => {},5 },6]);7console.log(children);8[ { title: 'test', fn: [AsyncFunction: fn], location: undefined } ]9const { normalizeChildren } = require('@playwright/test/lib/test');10const children = normalizeChildren([11 {12 fn: async ({}) => {},13 },14]);15console.log(children[0].location);16{ file: 'test.js', line: 2, column: 1 }17const { normalizeChildren } = require('@playwright/test/lib/test');18const children = normalizeChildren([19 {20 fn: async ({}) => {},21 },22]);23console.log(children[0].location.file);24const { normalizeChildren } = require('@playwright/test/lib/test');25const children = normalizeChildren([26 {27 fn: async ({}) => {},28 },29]);30console.log(children[0].location.line);31const { normalizeChildren } = require('@playwright/test/lib/test');32const children = normalizeChildren([33 {34 fn: async ({}) => {},
Using AI Code Generation
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.waitForSelector('text=Sign in');7 const elementHandle = await page.$('text=Sign in');8 const normalizedChildren = await page.evaluate(element => {9 const { normalizeChildren } = require('playwright-core/lib/server/dom');10 return normalizeChildren(element)11 }, elementHandle);12 console.log(normalizedChildren);13 await browser.close();14})();15[ ElementHandle { _context: [CDPSession], _client: [CDPSession], _page: [Page], _remoteObject: [Object], _disposed: false, _guid: '1.1', _apiName: 'ElementHandle', _initializer: [Object] } ]
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!!