Best JavaScript code snippet using playwright-internal
CSSTokenizerTests.js
Source:CSSTokenizerTests.js
1// Copyright 2020 Breakside Inc.2//3// Licensed under the Breakside Public License, Version 1.0 (the "License");4// you may not use this file except in compliance with the License.5// If a copy of the License was not distributed with this file, you may6// obtain a copy at7//8// http://breakside.io/licenses/LICENSE-1.0.txt9//10// Unless required by applicable law or agreed to in writing, software11// distributed under the License is distributed on an "AS IS" BASIS,12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13// See the License for the specific language governing permissions and14// limitations under the License.15// #import CSSOM16// #import TestKit17"use strict";18JSClass("CSSTokenizerTests", TKTestSuite, {19 testIdentifier: function(){20 var css = "test";21 var tokenizer = CSSTokenizer.init();22 var tokens = tokenizer.tokenize(css);23 TKAssertEquals(tokens.length, 1);24 TKAssertInstance(tokens[0], CSSTokenizer.IdentifierToken);25 TKAssertEquals(tokens[0].name, "test");26 css = "test Test _test -test --test";27 tokenizer = CSSTokenizer.init();28 tokens = tokenizer.tokenize(css);29 TKAssertEquals(tokens.length, 9);30 TKAssertInstance(tokens[0], CSSTokenizer.IdentifierToken);31 TKAssertInstance(tokens[1], CSSTokenizer.WhitespaceToken);32 TKAssertInstance(tokens[2], CSSTokenizer.IdentifierToken);33 TKAssertInstance(tokens[3], CSSTokenizer.WhitespaceToken);34 TKAssertInstance(tokens[4], CSSTokenizer.IdentifierToken);35 TKAssertInstance(tokens[5], CSSTokenizer.WhitespaceToken);36 TKAssertInstance(tokens[6], CSSTokenizer.IdentifierToken);37 TKAssertInstance(tokens[7], CSSTokenizer.WhitespaceToken);38 TKAssertInstance(tokens[8], CSSTokenizer.IdentifierToken);39 TKAssertEquals(tokens[0].name, "test");40 TKAssertEquals(tokens[2].name, "Test");41 TKAssertEquals(tokens[4].name, "_test");42 TKAssertEquals(tokens[6].name, "-test");43 TKAssertEquals(tokens[8].name, "--test");44 TKAssertEquals(tokens[0].toString(), "test");45 TKAssertEquals(tokens[2].toString(), "Test");46 TKAssertEquals(tokens[8].toString(), "--test");47 },48 testWhitespace: function(){49 var css = "\n\n\ttest \t \r\nTest\r_test \f \f\t \n";50 var tokenizer = CSSTokenizer.init();51 var tokens = tokenizer.tokenize(css);52 TKAssertEquals(tokens.length, 7);53 TKAssertInstance(tokens[0], CSSTokenizer.WhitespaceToken);54 TKAssertInstance(tokens[1], CSSTokenizer.IdentifierToken);55 TKAssertInstance(tokens[2], CSSTokenizer.WhitespaceToken);56 TKAssertInstance(tokens[3], CSSTokenizer.IdentifierToken);57 TKAssertInstance(tokens[4], CSSTokenizer.WhitespaceToken);58 TKAssertInstance(tokens[5], CSSTokenizer.IdentifierToken);59 TKAssertInstance(tokens[6], CSSTokenizer.WhitespaceToken);60 TKAssertEquals(tokens[1].name, "test");61 TKAssertEquals(tokens[3].name, "Test");62 TKAssertEquals(tokens[5].name, "_test");63 TKAssertEquals(tokens[0].whitespace, "\n\n\t");64 TKAssertEquals(tokens[2].whitespace, " \t \r\n");65 TKAssertEquals(tokens[4].whitespace, "\r");66 TKAssertEquals(tokens[6].whitespace, " \f \f\t \n");67 TKAssertEquals(tokens[0].toString(), "\n\n\t");68 TKAssertEquals(tokens[2].toString(), " \t \r\n");69 TKAssertEquals(tokens[6].toString(), " \f \f\t \n");70 },71 testComment: function(){72 var css = "/*\n this is a comment\n two lines\n*/\n/**/Test/*comment*/_test/* comment */";73 var tokenizer = CSSTokenizer.init();74 var tokens = tokenizer.tokenize(css);75 TKAssertEquals(tokens.length, 7);76 TKAssertInstance(tokens[0], CSSTokenizer.CommentToken);77 TKAssertInstance(tokens[1], CSSTokenizer.WhitespaceToken);78 TKAssertInstance(tokens[2], CSSTokenizer.CommentToken);79 TKAssertInstance(tokens[3], CSSTokenizer.IdentifierToken);80 TKAssertInstance(tokens[4], CSSTokenizer.CommentToken);81 TKAssertInstance(tokens[5], CSSTokenizer.IdentifierToken);82 TKAssertInstance(tokens[6], CSSTokenizer.CommentToken);83 TKAssertEquals(tokens[3].name, "Test");84 TKAssertEquals(tokens[5].name, "_test");85 TKAssertEquals(tokens[1].whitespace, "\n");86 TKAssertEquals(tokens[0].text, "\n this is a comment\n two lines\n");87 TKAssertEquals(tokens[2].text, "");88 TKAssertEquals(tokens[4].text, "comment");89 TKAssertEquals(tokens[6].text, " comment ");90 TKAssertEquals(tokens[0].toString(), "/*\n this is a comment\n two lines\n*/");91 TKAssertEquals(tokens[2].toString(), "/**/");92 TKAssertEquals(tokens[4].toString(), "/*comment*/");93 TKAssertEquals(tokens[6].toString(), "/* comment */");94 },95 testString: function(){96 var css = "'test' 'tes\\'t' \"Test\" \"Tes\\\"t\" 'te\\\nst'";97 var tokenizer = CSSTokenizer.init();98 var tokens = tokenizer.tokenize(css);99 TKAssertEquals(tokens.length, 9);100 TKAssertInstance(tokens[0], CSSTokenizer.StringToken);101 TKAssertInstance(tokens[1], CSSTokenizer.WhitespaceToken);102 TKAssertInstance(tokens[2], CSSTokenizer.StringToken);103 TKAssertInstance(tokens[3], CSSTokenizer.WhitespaceToken);104 TKAssertInstance(tokens[4], CSSTokenizer.StringToken);105 TKAssertInstance(tokens[5], CSSTokenizer.WhitespaceToken);106 TKAssertInstance(tokens[6], CSSTokenizer.StringToken);107 TKAssertInstance(tokens[7], CSSTokenizer.WhitespaceToken);108 TKAssertInstance(tokens[8], CSSTokenizer.StringToken);109 TKAssertEquals(tokens[0].quote, "'");110 TKAssertEquals(tokens[0].value, "test");111 TKAssertEquals(tokens[2].quote, "'");112 TKAssertEquals(tokens[2].value, "tes't");113 TKAssertEquals(tokens[4].quote, '"');114 TKAssertEquals(tokens[4].value, 'Test');115 TKAssertEquals(tokens[6].quote, '"');116 TKAssertEquals(tokens[6].value, 'Tes"t');117 TKAssertEquals(tokens[8].quote, "'");118 TKAssertEquals(tokens[8].value, "test");119 TKAssertEquals(tokens[0].toString(), "'test'");120 TKAssertEquals(tokens[2].toString(), "'tes\\'t'");121 TKAssertEquals(tokens[4].toString(), '"Test"');122 TKAssertEquals(tokens[6].toString(), '"Tes\\"t"');123 TKAssertEquals(tokens[0].toString(), "'test'");124 },125 testNumbers: function(){126 var css = "1,12,123,1.23,.123,1e23";127 var tokenizer = CSSTokenizer.init();128 var tokens = tokenizer.tokenize(css);129 TKAssertEquals(tokens.length, 11);130 TKAssertInstance(tokens[0], CSSTokenizer.NumberToken);131 TKAssertInstance(tokens[1], CSSTokenizer.CommaToken);132 TKAssertInstance(tokens[2], CSSTokenizer.NumberToken);133 TKAssertInstance(tokens[3], CSSTokenizer.CommaToken);134 TKAssertInstance(tokens[4], CSSTokenizer.NumberToken);135 TKAssertInstance(tokens[5], CSSTokenizer.CommaToken);136 TKAssertInstance(tokens[6], CSSTokenizer.NumberToken);137 TKAssertInstance(tokens[7], CSSTokenizer.CommaToken);138 TKAssertInstance(tokens[8], CSSTokenizer.NumberToken);139 TKAssertInstance(tokens[9], CSSTokenizer.CommaToken);140 TKAssertInstance(tokens[10], CSSTokenizer.NumberToken);141 TKAssertExactEquals(tokens[0].value, 1);142 TKAssertExactEquals(tokens[2].value, 12);143 TKAssertExactEquals(tokens[4].value, 123);144 TKAssertFloatEquals(tokens[6].value, 1.23);145 TKAssertFloatEquals(tokens[8].value, 0.123);146 TKAssertFloatEquals(tokens[10].value, 1e23);147 TKAssertEquals(tokens[0].toString(), "1");148 TKAssertEquals(tokens[2].toString(), "12");149 TKAssertEquals(tokens[4].toString(), "123");150 TKAssertEquals(tokens[6].toString(), "1.23");151 TKAssertEquals(tokens[8].toString(), "0.123"); // rewritten with leading 0152 TKAssertEquals(tokens[10].toString(), "1e+23"); // rewritten with + exponent153 css = "+1,+12,+123,+1.23,+.123,+1e23";154 tokenizer = CSSTokenizer.init();155 tokens = tokenizer.tokenize(css);156 TKAssertEquals(tokens.length, 11);157 TKAssertInstance(tokens[0], CSSTokenizer.NumberToken);158 TKAssertInstance(tokens[1], CSSTokenizer.CommaToken);159 TKAssertInstance(tokens[2], CSSTokenizer.NumberToken);160 TKAssertInstance(tokens[3], CSSTokenizer.CommaToken);161 TKAssertInstance(tokens[4], CSSTokenizer.NumberToken);162 TKAssertInstance(tokens[5], CSSTokenizer.CommaToken);163 TKAssertInstance(tokens[6], CSSTokenizer.NumberToken);164 TKAssertInstance(tokens[7], CSSTokenizer.CommaToken);165 TKAssertInstance(tokens[8], CSSTokenizer.NumberToken);166 TKAssertInstance(tokens[9], CSSTokenizer.CommaToken);167 TKAssertInstance(tokens[10], CSSTokenizer.NumberToken);168 TKAssertExactEquals(tokens[0].value, 1);169 TKAssertExactEquals(tokens[2].value, 12);170 TKAssertExactEquals(tokens[4].value, 123);171 TKAssertFloatEquals(tokens[6].value, 1.23);172 TKAssertFloatEquals(tokens[8].value, 0.123);173 TKAssertFloatEquals(tokens[10].value, 1e23);174 // all rewritten without leading plus175 TKAssertEquals(tokens[0].toString(), "1");176 TKAssertEquals(tokens[2].toString(), "12");177 TKAssertEquals(tokens[4].toString(), "123");178 TKAssertEquals(tokens[6].toString(), "1.23");179 TKAssertEquals(tokens[8].toString(), "0.123"); // rewritten with leading 0180 TKAssertEquals(tokens[10].toString(), "1e+23"); // rewritten with + exponent181 css = "-1,-12,-123,-1.23,-.123,-1e23";182 tokenizer = CSSTokenizer.init();183 tokens = tokenizer.tokenize(css);184 TKAssertEquals(tokens.length, 11);185 TKAssertInstance(tokens[0], CSSTokenizer.NumberToken);186 TKAssertInstance(tokens[1], CSSTokenizer.CommaToken);187 TKAssertInstance(tokens[2], CSSTokenizer.NumberToken);188 TKAssertInstance(tokens[3], CSSTokenizer.CommaToken);189 TKAssertInstance(tokens[4], CSSTokenizer.NumberToken);190 TKAssertInstance(tokens[5], CSSTokenizer.CommaToken);191 TKAssertInstance(tokens[6], CSSTokenizer.NumberToken);192 TKAssertInstance(tokens[7], CSSTokenizer.CommaToken);193 TKAssertInstance(tokens[8], CSSTokenizer.NumberToken);194 TKAssertInstance(tokens[9], CSSTokenizer.CommaToken);195 TKAssertInstance(tokens[10], CSSTokenizer.NumberToken);196 TKAssertExactEquals(tokens[0].value, -1);197 TKAssertExactEquals(tokens[2].value, -12);198 TKAssertExactEquals(tokens[4].value, -123);199 TKAssertFloatEquals(tokens[6].value, -1.23);200 TKAssertFloatEquals(tokens[8].value, -0.123);201 TKAssertFloatEquals(tokens[10].value, -1e23);202 TKAssertEquals(tokens[0].toString(), "-1");203 TKAssertEquals(tokens[2].toString(), "-12");204 TKAssertEquals(tokens[4].toString(), "-123");205 TKAssertEquals(tokens[6].toString(), "-1.23");206 TKAssertEquals(tokens[8].toString(), "-0.123"); // rewritten with leading 0207 TKAssertEquals(tokens[10].toString(), "-1e+23"); // rewritten with + exponent208 },209 testDimensions: function(){210 var css = "1px,12em,123abc,1.23test,.123_abc,1e23ABC";211 var tokenizer = CSSTokenizer.init();212 var tokens = tokenizer.tokenize(css);213 TKAssertEquals(tokens.length, 11);214 TKAssertInstance(tokens[0], CSSTokenizer.DimensionToken);215 TKAssertInstance(tokens[1], CSSTokenizer.CommaToken);216 TKAssertInstance(tokens[2], CSSTokenizer.DimensionToken);217 TKAssertInstance(tokens[3], CSSTokenizer.CommaToken);218 TKAssertInstance(tokens[4], CSSTokenizer.DimensionToken);219 TKAssertInstance(tokens[5], CSSTokenizer.CommaToken);220 TKAssertInstance(tokens[6], CSSTokenizer.DimensionToken);221 TKAssertInstance(tokens[7], CSSTokenizer.CommaToken);222 TKAssertInstance(tokens[8], CSSTokenizer.DimensionToken);223 TKAssertInstance(tokens[9], CSSTokenizer.CommaToken);224 TKAssertInstance(tokens[10], CSSTokenizer.DimensionToken);225 TKAssertExactEquals(tokens[0].value, 1);226 TKAssertExactEquals(tokens[2].value, 12);227 TKAssertExactEquals(tokens[4].value, 123);228 TKAssertFloatEquals(tokens[6].value, 1.23);229 TKAssertFloatEquals(tokens[8].value, 0.123);230 TKAssertFloatEquals(tokens[10].value, 1e23);231 TKAssertEquals(tokens[0].units, "px");232 TKAssertEquals(tokens[2].units, "em");233 TKAssertEquals(tokens[4].units, "abc");234 TKAssertEquals(tokens[6].units, "test");235 TKAssertEquals(tokens[8].units, "_abc");236 TKAssertEquals(tokens[10].units, "ABC");237 TKAssertEquals(tokens[0].toString(), "1px");238 TKAssertEquals(tokens[2].toString(), "12em");239 TKAssertEquals(tokens[4].toString(), "123abc");240 TKAssertEquals(tokens[6].toString(), "1.23test");241 TKAssertEquals(tokens[8].toString(), "0.123_abc"); // rewritten with leading 0242 TKAssertEquals(tokens[10].toString(), "1e+23ABC"); // rewritten with + exponent243 css = "+1px,+12em,+123abc,+1.23test,+.123_abc,+1e23ABC";244 tokenizer = CSSTokenizer.init();245 tokens = tokenizer.tokenize(css);246 TKAssertEquals(tokens.length, 11);247 TKAssertInstance(tokens[0], CSSTokenizer.DimensionToken);248 TKAssertInstance(tokens[1], CSSTokenizer.CommaToken);249 TKAssertInstance(tokens[2], CSSTokenizer.DimensionToken);250 TKAssertInstance(tokens[3], CSSTokenizer.CommaToken);251 TKAssertInstance(tokens[4], CSSTokenizer.DimensionToken);252 TKAssertInstance(tokens[5], CSSTokenizer.CommaToken);253 TKAssertInstance(tokens[6], CSSTokenizer.DimensionToken);254 TKAssertInstance(tokens[7], CSSTokenizer.CommaToken);255 TKAssertInstance(tokens[8], CSSTokenizer.DimensionToken);256 TKAssertInstance(tokens[9], CSSTokenizer.CommaToken);257 TKAssertInstance(tokens[10], CSSTokenizer.DimensionToken);258 TKAssertExactEquals(tokens[0].value, 1);259 TKAssertExactEquals(tokens[2].value, 12);260 TKAssertExactEquals(tokens[4].value, 123);261 TKAssertFloatEquals(tokens[6].value, 1.23);262 TKAssertFloatEquals(tokens[8].value, 0.123);263 TKAssertFloatEquals(tokens[10].value, 1e23);264 TKAssertEquals(tokens[0].units, "px");265 TKAssertEquals(tokens[2].units, "em");266 TKAssertEquals(tokens[4].units, "abc");267 TKAssertEquals(tokens[6].units, "test");268 TKAssertEquals(tokens[8].units, "_abc");269 TKAssertEquals(tokens[10].units, "ABC");270 // all rewritten without leading plus271 TKAssertEquals(tokens[0].toString(), "1px");272 TKAssertEquals(tokens[2].toString(), "12em");273 TKAssertEquals(tokens[4].toString(), "123abc");274 TKAssertEquals(tokens[6].toString(), "1.23test");275 TKAssertEquals(tokens[8].toString(), "0.123_abc"); // rewritten with leading 0276 TKAssertEquals(tokens[10].toString(), "1e+23ABC"); // rewritten with + exponent277 css = "-1px,-12em,-123abc,-1.23test,-.123_abc,-1e23ABC";278 tokenizer = CSSTokenizer.init();279 tokens = tokenizer.tokenize(css);280 TKAssertEquals(tokens.length, 11);281 TKAssertInstance(tokens[0], CSSTokenizer.DimensionToken);282 TKAssertInstance(tokens[1], CSSTokenizer.CommaToken);283 TKAssertInstance(tokens[2], CSSTokenizer.DimensionToken);284 TKAssertInstance(tokens[3], CSSTokenizer.CommaToken);285 TKAssertInstance(tokens[4], CSSTokenizer.DimensionToken);286 TKAssertInstance(tokens[5], CSSTokenizer.CommaToken);287 TKAssertInstance(tokens[6], CSSTokenizer.DimensionToken);288 TKAssertInstance(tokens[7], CSSTokenizer.CommaToken);289 TKAssertInstance(tokens[8], CSSTokenizer.DimensionToken);290 TKAssertInstance(tokens[9], CSSTokenizer.CommaToken);291 TKAssertInstance(tokens[10], CSSTokenizer.DimensionToken);292 TKAssertExactEquals(tokens[0].value, -1);293 TKAssertExactEquals(tokens[2].value, -12);294 TKAssertExactEquals(tokens[4].value, -123);295 TKAssertFloatEquals(tokens[6].value, -1.23);296 TKAssertFloatEquals(tokens[8].value, -0.123);297 TKAssertFloatEquals(tokens[10].value, -1e23);298 TKAssertEquals(tokens[0].units, "px");299 TKAssertEquals(tokens[2].units, "em");300 TKAssertEquals(tokens[4].units, "abc");301 TKAssertEquals(tokens[6].units, "test");302 TKAssertEquals(tokens[8].units, "_abc");303 TKAssertEquals(tokens[10].units, "ABC");304 TKAssertEquals(tokens[0].toString(), "-1px");305 TKAssertEquals(tokens[2].toString(), "-12em");306 TKAssertEquals(tokens[4].toString(), "-123abc");307 TKAssertEquals(tokens[6].toString(), "-1.23test");308 TKAssertEquals(tokens[8].toString(), "-0.123_abc"); // rewritten with leading 0309 TKAssertEquals(tokens[10].toString(), "-1e+23ABC"); // rewritten with + exponent310 },311 testPercentages: function(){312 var css = "1%,12%,123%,1.23%,.123%,1e23%";313 var tokenizer = CSSTokenizer.init();314 var tokens = tokenizer.tokenize(css);315 TKAssertEquals(tokens.length, 11);316 TKAssertInstance(tokens[0], CSSTokenizer.PercentageToken);317 TKAssertInstance(tokens[1], CSSTokenizer.CommaToken);318 TKAssertInstance(tokens[2], CSSTokenizer.PercentageToken);319 TKAssertInstance(tokens[3], CSSTokenizer.CommaToken);320 TKAssertInstance(tokens[4], CSSTokenizer.PercentageToken);321 TKAssertInstance(tokens[5], CSSTokenizer.CommaToken);322 TKAssertInstance(tokens[6], CSSTokenizer.PercentageToken);323 TKAssertInstance(tokens[7], CSSTokenizer.CommaToken);324 TKAssertInstance(tokens[8], CSSTokenizer.PercentageToken);325 TKAssertInstance(tokens[9], CSSTokenizer.CommaToken);326 TKAssertInstance(tokens[10], CSSTokenizer.PercentageToken);327 TKAssertExactEquals(tokens[0].value, 1);328 TKAssertExactEquals(tokens[2].value, 12);329 TKAssertExactEquals(tokens[4].value, 123);330 TKAssertFloatEquals(tokens[6].value, 1.23);331 TKAssertFloatEquals(tokens[8].value, 0.123);332 TKAssertFloatEquals(tokens[10].value, 1e23);333 TKAssertEquals(tokens[0].toString(), "1%");334 TKAssertEquals(tokens[2].toString(), "12%");335 TKAssertEquals(tokens[4].toString(), "123%");336 TKAssertEquals(tokens[6].toString(), "1.23%");337 TKAssertEquals(tokens[8].toString(), "0.123%"); // rewritten with leading 0338 TKAssertEquals(tokens[10].toString(), "1e+23%"); // rewritten with + exponent339 css = "+1%,+12%,+123%,+1.23%,+.123%,+1e23%";340 tokenizer = CSSTokenizer.init();341 tokens = tokenizer.tokenize(css);342 TKAssertEquals(tokens.length, 11);343 TKAssertInstance(tokens[0], CSSTokenizer.PercentageToken);344 TKAssertInstance(tokens[1], CSSTokenizer.CommaToken);345 TKAssertInstance(tokens[2], CSSTokenizer.PercentageToken);346 TKAssertInstance(tokens[3], CSSTokenizer.CommaToken);347 TKAssertInstance(tokens[4], CSSTokenizer.PercentageToken);348 TKAssertInstance(tokens[5], CSSTokenizer.CommaToken);349 TKAssertInstance(tokens[6], CSSTokenizer.PercentageToken);350 TKAssertInstance(tokens[7], CSSTokenizer.CommaToken);351 TKAssertInstance(tokens[8], CSSTokenizer.PercentageToken);352 TKAssertInstance(tokens[9], CSSTokenizer.CommaToken);353 TKAssertInstance(tokens[10], CSSTokenizer.PercentageToken);354 TKAssertExactEquals(tokens[0].value, 1);355 TKAssertExactEquals(tokens[2].value, 12);356 TKAssertExactEquals(tokens[4].value, 123);357 TKAssertFloatEquals(tokens[6].value, 1.23);358 TKAssertFloatEquals(tokens[8].value, 0.123);359 TKAssertFloatEquals(tokens[10].value, 1e23);360 // all rewritten without leading plus361 TKAssertEquals(tokens[0].toString(), "1%");362 TKAssertEquals(tokens[2].toString(), "12%");363 TKAssertEquals(tokens[4].toString(), "123%");364 TKAssertEquals(tokens[6].toString(), "1.23%");365 TKAssertEquals(tokens[8].toString(), "0.123%"); // rewritten with leading 0366 TKAssertEquals(tokens[10].toString(), "1e+23%"); // rewritten with + exponent367 css = "-1%,-12%,-123%,-1.23%,-.123%,-1e23%";368 tokenizer = CSSTokenizer.init();369 tokens = tokenizer.tokenize(css);370 TKAssertEquals(tokens.length, 11);371 TKAssertInstance(tokens[0], CSSTokenizer.PercentageToken);372 TKAssertInstance(tokens[1], CSSTokenizer.CommaToken);373 TKAssertInstance(tokens[2], CSSTokenizer.PercentageToken);374 TKAssertInstance(tokens[3], CSSTokenizer.CommaToken);375 TKAssertInstance(tokens[4], CSSTokenizer.PercentageToken);376 TKAssertInstance(tokens[5], CSSTokenizer.CommaToken);377 TKAssertInstance(tokens[6], CSSTokenizer.PercentageToken);378 TKAssertInstance(tokens[7], CSSTokenizer.CommaToken);379 TKAssertInstance(tokens[8], CSSTokenizer.PercentageToken);380 TKAssertInstance(tokens[9], CSSTokenizer.CommaToken);381 TKAssertInstance(tokens[10], CSSTokenizer.PercentageToken);382 TKAssertExactEquals(tokens[0].value, -1);383 TKAssertExactEquals(tokens[2].value, -12);384 TKAssertExactEquals(tokens[4].value, -123);385 TKAssertFloatEquals(tokens[6].value, -1.23);386 TKAssertFloatEquals(tokens[8].value, -0.123);387 TKAssertFloatEquals(tokens[10].value, -1e23);388 TKAssertEquals(tokens[0].toString(), "-1%");389 TKAssertEquals(tokens[2].toString(), "-12%");390 TKAssertEquals(tokens[4].toString(), "-123%");391 TKAssertEquals(tokens[6].toString(), "-1.23%");392 TKAssertEquals(tokens[8].toString(), "-0.123%"); // rewritten with leading 0393 TKAssertEquals(tokens[10].toString(), "-1e+23%"); // rewritten with + exponent394 },395 testHash: function(){396 var css = "#";397 var tokenizer = CSSTokenizer.init();398 var tokens = tokenizer.tokenize(css);399 TKAssertEquals(tokens.length, 1);400 TKAssertInstance(tokens[0], CSSTokenizer.DelimToken);401 TKAssertEquals(tokens[0].char, "#");402 TKAssertEquals(tokens[0].toString(), "#");403 css = "#test";404 tokenizer = CSSTokenizer.init();405 tokens = tokenizer.tokenize(css);406 TKAssertEquals(tokens.length, 1);407 TKAssertInstance(tokens[0], CSSTokenizer.HashToken);408 TKAssertEquals(tokens[0].name, "test");409 TKAssertEquals(tokens[0].type, "id");410 TKAssertEquals(tokens[0].toString(), "#test");411 css = "#9test";412 tokenizer = CSSTokenizer.init();413 tokens = tokenizer.tokenize(css);414 TKAssertEquals(tokens.length, 1);415 TKAssertInstance(tokens[0], CSSTokenizer.HashToken);416 TKAssertEquals(tokens[0].name, "9test");417 TKAssertNull(tokens[0].type);418 TKAssertEquals(tokens[0].toString(), "#9test");419 },420 testAt: function(){421 var css = "@";422 var tokenizer = CSSTokenizer.init();423 var tokens = tokenizer.tokenize(css);424 TKAssertEquals(tokens.length, 1);425 TKAssertInstance(tokens[0], CSSTokenizer.DelimToken);426 TKAssertEquals(tokens[0].char, "@");427 TKAssertEquals(tokens[0].toString(), "@");428 css = "@test";429 tokenizer = CSSTokenizer.init();430 tokens = tokenizer.tokenize(css);431 TKAssertEquals(tokens.length, 1);432 TKAssertInstance(tokens[0], CSSTokenizer.AtKeywordToken);433 TKAssertEquals(tokens[0].name, "test");434 TKAssertEquals(tokens[0].toString(), "@test");435 css = "@9test";436 tokenizer = CSSTokenizer.init();437 tokens = tokenizer.tokenize(css);438 TKAssertEquals(tokens.length, 2);439 TKAssertInstance(tokens[0], CSSTokenizer.DelimToken);440 TKAssertEquals(tokens[0].char, "@");441 TKAssertInstance(tokens[1], CSSTokenizer.DimensionToken);442 TKAssertEquals(tokens[1].value, 9);443 TKAssertEquals(tokens[1].units, "test");444 TKAssertEquals(tokens[0].toString(), "@");445 TKAssertEquals(tokens[1].toString(), "9test");446 },447 testDelimiters: function(){448 var css = "()[]{},:;<><!---->.";449 var tokenizer = CSSTokenizer.init();450 var tokens = tokenizer.tokenize(css);451 TKAssertEquals(tokens.length, 14);452 TKAssertInstance(tokens[0], CSSTokenizer.OpenParenToken);453 TKAssertInstance(tokens[1], CSSTokenizer.CloseParenToken);454 TKAssertInstance(tokens[2], CSSTokenizer.OpenSquareToken);455 TKAssertInstance(tokens[3], CSSTokenizer.CloseSquareToken);456 TKAssertInstance(tokens[4], CSSTokenizer.OpenCurlyToken);457 TKAssertInstance(tokens[5], CSSTokenizer.CloseCurlyToken);458 TKAssertInstance(tokens[6], CSSTokenizer.CommaToken);459 TKAssertInstance(tokens[7], CSSTokenizer.ColonToken);460 TKAssertInstance(tokens[8], CSSTokenizer.SemicolonToken);461 TKAssertInstance(tokens[9], CSSTokenizer.DelimToken);462 TKAssertEquals(tokens[9].char, "<");463 TKAssertInstance(tokens[10], CSSTokenizer.DelimToken);464 TKAssertEquals(tokens[10].char, ">");465 TKAssertInstance(tokens[11], CSSTokenizer.CDOToken);466 TKAssertInstance(tokens[12], CSSTokenizer.CDCToken);467 TKAssertInstance(tokens[13], CSSTokenizer.DelimToken);468 TKAssertEquals(tokens[13].char, ".");469 TKAssertEquals(tokens[0].toString(), "(");470 TKAssertEquals(tokens[1].toString(), ")");471 TKAssertEquals(tokens[2].toString(), "[");472 TKAssertEquals(tokens[3].toString(), "]");473 TKAssertEquals(tokens[4].toString(), "{");474 TKAssertEquals(tokens[5].toString(), "}");475 TKAssertEquals(tokens[6].toString(), ",");476 TKAssertEquals(tokens[7].toString(), ":");477 TKAssertEquals(tokens[8].toString(), ";");478 TKAssertEquals(tokens[9].toString(), "<");479 TKAssertEquals(tokens[10].toString(), ">");480 TKAssertEquals(tokens[11].toString(), "<!--");481 TKAssertEquals(tokens[12].toString(), "-->");482 TKAssertEquals(tokens[13].toString(), ".");483 },484 testFunctions: function(){485 var css = "test()";486 var tokenizer = CSSTokenizer.init();487 var tokens = tokenizer.tokenize(css);488 TKAssertEquals(tokens.length, 2);489 TKAssertInstance(tokens[0], CSSTokenizer.FunctionToken);490 TKAssertEquals(tokens[0].name, "test");491 TKAssertInstance(tokens[1], CSSTokenizer.CloseParenToken);492 TKAssertEquals(tokens[0].toString(), "test(");493 TKAssertEquals(tokens[1].toString(), ")");494 css = "--test('one',2, 3.4)";495 tokenizer = CSSTokenizer.init();496 tokens = tokenizer.tokenize(css);497 TKAssertEquals(tokens.length, 8);498 TKAssertInstance(tokens[0], CSSTokenizer.FunctionToken);499 TKAssertInstance(tokens[1], CSSTokenizer.StringToken);500 TKAssertInstance(tokens[2], CSSTokenizer.CommaToken);501 TKAssertInstance(tokens[3], CSSTokenizer.NumberToken);502 TKAssertInstance(tokens[4], CSSTokenizer.CommaToken);503 TKAssertInstance(tokens[5], CSSTokenizer.WhitespaceToken);504 TKAssertInstance(tokens[6], CSSTokenizer.NumberToken);505 TKAssertInstance(tokens[7], CSSTokenizer.CloseParenToken);506 TKAssertEquals(tokens[0].name, "--test");507 TKAssertEquals(tokens[1].value, "one");508 TKAssertEquals(tokens[3].value, 2);509 TKAssertFloatEquals(tokens[6].value, 3.4);510 TKAssertEquals(tokens[0].toString(), "--test(");511 TKAssertEquals(tokens[1].toString(), "'one'");512 TKAssertEquals(tokens[2].toString(), ",");513 TKAssertEquals(tokens[3].toString(), "2");514 TKAssertEquals(tokens[4].toString(), ",");515 TKAssertEquals(tokens[5].toString(), " ");516 TKAssertEquals(tokens[6].toString(), "3.4");517 TKAssertEquals(tokens[7].toString(), ")");518 },519 testURL: function(){520 var css = "url(one)";521 var tokenizer = CSSTokenizer.init();522 var tokens = tokenizer.tokenize(css);523 TKAssertEquals(tokens.length, 1);524 TKAssertInstance(tokens[0], CSSTokenizer.URLToken);525 TKAssertEquals(tokens[0].url, "one");526 TKAssertEquals(tokens[0].toString(), "url(one)");527 css = "url( one/there#hash )";528 tokenizer = CSSTokenizer.init();529 tokens = tokenizer.tokenize(css);530 TKAssertEquals(tokens.length, 1);531 TKAssertInstance(tokens[0], CSSTokenizer.URLToken);532 TKAssertEquals(tokens[0].url, "one/there#hash");533 TKAssertEquals(tokens[0].toString(), "url(one/there#hash)"); // rewritten without whitespace534 css = "url('one/there#hash')";535 tokenizer = CSSTokenizer.init();536 tokens = tokenizer.tokenize(css);537 TKAssertEquals(tokens.length, 3);538 TKAssertInstance(tokens[0], CSSTokenizer.FunctionToken);539 TKAssertEquals(tokens[0].name, "url");540 TKAssertInstance(tokens[1], CSSTokenizer.StringToken);541 TKAssertEquals(tokens[1].value, "one/there#hash");542 TKAssertInstance(tokens[2], CSSTokenizer.CloseParenToken);543 TKAssertEquals(tokens[0].toString(), "url(");544 TKAssertEquals(tokens[1].toString(), "'one/there#hash'");545 TKAssertEquals(tokens[2].toString(), ")");546 css = "url( \"one/there#hash\" )";547 tokenizer = CSSTokenizer.init();548 tokens = tokenizer.tokenize(css);549 TKAssertEquals(tokens.length, 4);550 TKAssertInstance(tokens[0], CSSTokenizer.FunctionToken);551 TKAssertEquals(tokens[0].name, "url");552 TKAssertInstance(tokens[1], CSSTokenizer.StringToken);553 TKAssertEquals(tokens[1].value, "one/there#hash");554 TKAssertInstance(tokens[2], CSSTokenizer.WhitespaceToken);555 TKAssertEquals(tokens[2].whitespace, " ");556 TKAssertInstance(tokens[3], CSSTokenizer.CloseParenToken);557 TKAssertEquals(tokens[0].toString(), "url(");558 TKAssertEquals(tokens[1].toString(), "\"one/there#hash\"");559 TKAssertEquals(tokens[2].toString(), " ");560 TKAssertEquals(tokens[3].toString(), ")");561 },...
token.js
Source:token.js
1/*2 * THIS FILE IS AUTO GENERATED from 'lib/token.kep'3 * DO NOT EDIT4*/5"use strict";6var __o = require("./node"),7 Node = __o["Node"],8 defineNode = __o["defineNode"],9 Token, StringToken, NumberToken, RegularExpressionToken, BooleanToken, NullToken, IdentifierToken, KeywordToken,10 PunctuatorToken, CommentToken, WhitespaceToken, LineTerminatorToken;11(Token = (function(loc, value) {12 var self = this;13 Node.call(self, loc);14 (self.value = value);15}));16(Token.prototype = new(Node)());17(StringToken = defineNode(Token, "String", [], ["value"], (function(loc, value) {18 var self = this;19 Token.call(self, loc, value);20})));21(NumberToken = defineNode(Token, "Number", [], ["value"], (function(loc, value) {22 var self = this;23 Token.call(self, loc, value);24})));25(RegularExpressionToken = defineNode(Token, "RegularExpression", [], ["value"], (function(loc, value) {26 var self = this;27 Token.call(self, loc, value);28})));29(BooleanToken = defineNode(Token, "Boolean", [], ["value"], (function(loc, value) {30 var self = this;31 Token.call(self, loc, value);32})));33(NullToken = defineNode(Token, "Null", [], ["value"], (function(loc, value) {34 var self = this;35 Token.call(self, loc, value);36})));37(IdentifierToken = defineNode(Token, "Identifier", [], ["value"], (function(loc, value) {38 var self = this;39 Token.call(self, loc, value);40})));41(KeywordToken = defineNode(Token, "Keyword", [], ["value"], (function(loc, value) {42 var self = this;43 Token.call(self, loc, value);44})));45(PunctuatorToken = defineNode(Token, "Punctuator", [], ["value"], (function(loc, value) {46 var self = this;47 Token.call(self, loc, value);48})));49(CommentToken = defineNode(Token, "Comment", [], ["value", "multiline", "linebreak"], (function(loc, value, multiline,50 linebreak) {51 var self = this;52 Token.call(self, loc, value);53 (self.multiline = (!(!multiline)));54 (self.linebreak = (!(!linebreak)));55})));56(WhitespaceToken = defineNode(Token, "Whitespace", [], ["value"], (function(loc, value) {57 var self = this;58 Token.call(self, loc, value);59})));60(LineTerminatorToken = defineNode(Token, "LineTerminator", [], ["value"], (function(loc, value) {61 var self = this;62 Token.call(self, loc, value);63})));64(exports.Token = Token);65(exports.StringToken = StringToken);66(exports.NumberToken = NumberToken);67(exports.RegularExpressionToken = RegularExpressionToken);68(exports.BooleanToken = BooleanToken);69(exports.NullToken = NullToken);70(exports.IdentifierToken = IdentifierToken);71(exports.KeywordToken = KeywordToken);72(exports.PunctuatorToken = PunctuatorToken);73(exports.CommentToken = CommentToken);74(exports.WhitespaceToken = WhitespaceToken);...
CoffeeScanner.js
Source:CoffeeScanner.js
...30 token = new EolToken(this.source);31 } else if (/\#/.test(currentChar)) {32 token = new CommentToken(this.source);33 } else if (/[^\S\n]/.test(currentChar)) {34 token = new WhitespaceToken(this.source);35 } else if (/(?:'|")/.test(currentChar)) {36 token = new StringToken(this.source);37 } else if (/^[\!\%\^\&\*\(\)\-\+\=\{\}\|\[\]\\\:\"\;\'\,\.\/\<\>\?]/.test(currentChar)) {38 token = new OperatorToken(this.source);39 } else if (/^[^\s\d\!\#\%\^\&\*\(\)\-\+\=\{\}\|\[\]\\\:\"\;\'\,\.\/\<\>\?]/.test(currentChar)) {40 token = new WordToken(this.source);41 } else if (/^\d/.test(currentChar)) {42 token = new NumberToken(this.source);43 } else {44 token = new Token(this.source);45 }46 return token;47};48/**...
disallow-multiple-line-breaks.js
Source:disallow-multiple-line-breaks.js
...43 file.iterateTokensByType('Whitespace', function(whitespaceToken) {44 if (whitespaceToken.getNewlineCount() === 0) {45 return;46 }47 var token = whitespaceToken.getPreviousNonWhitespaceToken();48 if (!token) {49 return;50 }51 var nextToken = token.getNextNonWhitespaceToken();52 errors.assert.linesBetween({53 token: token,54 nextToken: nextToken,55 atMost: 256 });57 });58 }...
Whitespace.test.js
Source:Whitespace.test.js
1import { List } from 'immutable'2import { setupContext } from '../../context'3import { createWhitespace } from '../pipes'4import { Whitespace as WhitespaceToken } from '../tokens'5import Whitespace from './Whitespace'6describe('Whitespace', () => {7 test('parse throws execption when tokenList is empty', async () => {8 const context = setupContext({9 logger: console10 })11 const tokenList = List([])12 expect(() => Whitespace.parse(context, tokenList)).toThrow()13 })14 test('is returns true for Whitespace node', () => {15 const context = setupContext({16 logger: console17 })18 const node = createWhitespace({19 tokenList: List([WhitespaceToken.parse(context, ' ')])20 })21 expect(Whitespace.is(node)).toBe(true)22 })...
WhitespaceToken.js
Source:WhitespaceToken.js
1/**2 * WhitespaceToken.js3 * 4 * The generic whitespace token.5 */6var Token = require('./Token').Token7, WHITESPACE = require('../constants/TokenTypes').get("WHITESPACE")8, extract9;10/**11 * Extract and consume this whitespace character.12 * @throws Error if an error occurred.13 */14extract = function () {15 this.text = this.currentChar();16 this.value = null;17 this.nextChar();18};19/**20 * Constructor21 * @param source the source from where to fetch subsequent characters.22 * @throws Error if an error occurred.23 */24exports.WhitespaceToken = function (source) {25 return Token(source, {26 extract: extract27 , type: WHITESPACE28 });...
classPoco_1_1WhitespaceToken.js
Source:classPoco_1_1WhitespaceToken.js
1var classPoco_1_1WhitespaceToken =2[3 [ "WhitespaceToken", "classPoco_1_1WhitespaceToken.html#aad743cfb355698179ed3ee97c94a0ca9", null ],4 [ "~WhitespaceToken", "classPoco_1_1WhitespaceToken.html#ab41e81e860ceafadd27e9f13fc7267c6", null ],5 [ "finish", "classPoco_1_1WhitespaceToken.html#a75148421a7ec0ff4da3647fe6a9938b5", null ],6 [ "start", "classPoco_1_1WhitespaceToken.html#a5097659d6f699961c2c4276a77320efd", null ],7 [ "tokenClass", "classPoco_1_1WhitespaceToken.html#a4bc1cd710815f47b2554e16bbd5ff4b7", null ]...
class_r_tools___n_t_s_1_1_util_1_1_whitespace_token.js
Source:class_r_tools___n_t_s_1_1_util_1_1_whitespace_token.js
1var class_r_tools___n_t_s_1_1_util_1_1_whitespace_token =2[3 [ "WhitespaceToken", "class_r_tools___n_t_s_1_1_util_1_1_whitespace_token.html#afcdd3f2dfc8ca17cb692ca0c0f2375d8", null ],4 [ "WhitespaceToken", "class_r_tools___n_t_s_1_1_util_1_1_whitespace_token.html#a4724c5475ff447ef00437210f0f87201", null ]...
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const page = await browser.newPage();5 await page.type('input[title="Search"]', 'Hello World');6 await page.keyboard.press('Enter');7 await page.waitForLoadState('load');8 await page.screenshot({ path: `example.png` });9 await browser.close();10})();11 at CDPSession.send (/home/username/node_modules/playwright-core/lib/cjs/server/cdpsession.js:130:13)12 at ExecutionContext._evaluateInternal (/home/username/node_modules/playwright-core/lib/cjs/server/frames.js:477:50)13 at ExecutionContext.evaluate (/home/username/node_modules/playwright-core/lib/cjs/server/frames.js:402:21)14 at ElementHandle.evaluate (/home/username/node_modules/playwright-core/lib/cjs/server/frames.js:100:33)15 at ElementHandle.textContent (/home/username/node_modules/playwright-core/lib/cjs/server/frames.js:117:31)
Using AI Code Generation
1const { WhitespaceToken } = require('playwright/lib/utils/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 const tokens = await page.$eval('body', (body) => {8 const text = body.textContent;9 const whitespaceToken = new WhitespaceToken();10 const tokens = whitespaceToken.tokenize(text);11 return tokens;12 });13 console.log(tokens);14 await browser.close();15})();16 {17 },18 {19 },20 {21 },22 {23 },24 {25 },26 {27 },28 {29 },30 {31 },32 {
Using AI Code Generation
1const { WhitespaceToken } = require('playwright/lib/protocol/protocol');2console.log(WhitespaceToken);3const { WhitespaceToken } = require('playwright/lib/protocol/protocol');4console.log(WhitespaceToken);5const { WhitespaceToken } = require('playwright/lib/protocol/protocol');6console.log(WhitespaceToken);7const { WhitespaceToken } = require('playwright/lib/protocol/protocol');8console.log(WhitespaceToken);9const { WhitespaceToken } = require('playwright/lib/protocol/protocol');10console.log(WhitespaceToken);11const { WhitespaceToken } = require('playwright/lib/protocol/protocol');12console.log(WhitespaceToken);13const { WhitespaceToken } = require('playwright/lib/protocol/protocol');14console.log(WhitespaceToken);15const { WhitespaceToken } = require('playwright/lib/protocol/protocol');16console.log(WhitespaceToken);17const { WhitespaceToken } = require('playwright/lib/protocol/protocol');18console.log(WhitespaceToken);19const { WhitespaceToken } = require('playwright/lib/protocol/protocol');20console.log(WhitespaceToken);21const { WhitespaceToken } = require('playwright/lib/protocol/protocol');22console.log(WhitespaceToken);23const { WhitespaceToken } = require('playwright/lib/protocol/protocol');24console.log(WhitespaceToken);25const { WhitespaceToken } = require('playwright/lib/protocol/protocol');26console.log(WhitespaceToken);27const { WhitespaceToken } = require('playwright/lib/protocol/protocol
Using AI Code Generation
1const { WhitespaceToken } = require('playwright/lib/server/frames');2const { Frame } = require('playwright/lib/server/frames');3const { Page } = require('playwright/lib/server/page');4const { ElementHandle } = require('playwright/lib/server/dom');5const { Element } = require('playwright/lib/server/dom');6const { EventEmitter } = require('events');7const { WhitespaceToken } = require('playwright/lib/server/frames');8const { Frame } = require('playwright/lib/server/frames');9const { Page } = require('playwright/lib/server/page');10const { ElementHandle } = require('playwright/lib/server/dom');11const { Element } = require('playwright/lib/server/dom');12const { EventEmitter } = require('events');13const { Frame } = require('playwright/lib/server/frames');14const { Page } = require('playwright/lib/server/page');15const { ElementHandle } = require('playwright/lib/server/dom');16const { Element } = require('playwright/lib/server/dom');17const { EventEmitter } = require('events');18const { Frame } = require('playwright/lib/server/frames');19const { Page } = require('playwright/lib/server/page');20const { ElementHandle } = require('playwright/lib/server/dom');21const { Element } = require('playwright/lib/server/dom');22const { EventEmitter } = require('events');23const { Frame } = require('playwright/lib/server/frames');24const { Page } = require('playwright/lib/server/page');25const { ElementHandle } = require('playwright/lib/server/dom');26const { Element } = require('playwright/lib/server/dom');27const { EventEmitter } = require('events');28const { WhitespaceToken } = require('playwright/lib/server/frames');29const { Frame } = require('playwright/lib/server/frames');30const { Page } = require('playwright/lib/server/page');31const { ElementHandle } = require('playwright/lib/server/dom');32const { Element } = require('playwright/lib/server/dom');33const { EventEmitter } = require('events');34const { WhitespaceToken } = require('playwright/lib/server/frames');35const { Frame } = require('playwright/lib/server/frames
Using AI Code Generation
1const { WhitespaceToken } = require('playwright/lib/client/protocol');2console.log(WhitespaceToken);3const { WhitespaceToken } = require('playwright');4console.log(WhitespaceToken);5function WhitespaceToken(value) {6 this.value = value;7}8function WhitespaceToken(value) {9 this.value = value;10}
Using AI Code Generation
1const { WhitespaceToken } = require('@playwright/test/lib/utils/tokens');2const { expect } = require('@playwright/test');3const { test, expect } = require('@playwright/test');4const { test, expect } = require('@playwright/test');5test('test', async ({ page }) => {6 const token = new WhitespaceToken();
Using AI Code Generation
1const { WhitespaceToken } = require('playwright/lib/server/supplements/recorder/recorderTypes');2const whitespaceToken = new WhitespaceToken();3console.log(whitespaceToken);4await page.click(whitespaceToken);5const { WhitespaceToken } = require('playwright/lib/server/supplements/recorder/recorderTypes');6const whitespaceToken = new WhitespaceToken();7console.log(whitespaceToken);8await page.click(whitespaceToken);9const { WhitespaceToken } = require('playwright/lib/server/supplements/recorder/recorderTypes');10const whitespaceToken = new WhitespaceToken();11console.log(whitespaceToken);12await page.click(whitespaceToken);13const { WhitespaceToken } = require('playwright/lib/server/supplements/recorder/recorderTypes');14const whitespaceToken = new WhitespaceToken();15console.log(whitespaceToken);16await page.click(whitespaceToken);17const { WhitespaceToken } = require('playwright/lib/server/supplements/recorder/recorderTypes');18const whitespaceToken = new WhitespaceToken();19console.log(whitespaceToken);20await page.click(whitespaceToken);21const { WhitespaceToken } = require('playwright/lib/server/supplements/recorder/recorderTypes');22const whitespaceToken = new WhitespaceToken();23console.log(whitespaceToken);24await page.click(whitespaceToken);25const { WhitespaceToken } = require('playwright/lib/server/supplements/recorder/recorderTypes');26const whitespaceToken = new WhitespaceToken();27console.log(whitespaceToken);28await page.click(whitespaceToken);29const { WhitespaceToken } = require('playwright/lib/server/supplements/recorder/recorderTypes');30const whitespaceToken = new WhitespaceToken();31console.log(whitespaceToken);32await page.click(whitespaceToken);33const { WhitespaceToken } = require('playwright/lib/server/supplements/rec
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!!