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
Jest + Playwright - Test callbacks of event-based DOM library
firefox browser does not start in playwright
Is it possible to get the selector from a locator object in playwright?
How to run a list of test suites in a single file concurrently in jest?
Running Playwright in Azure Function
firefox browser does not start in playwright
This question is quite close to a "need more focus" question. But let's try to give it some focus:
Does Playwright has access to the cPicker object on the page? Does it has access to the window object?
Yes, you can access both cPicker and the window object inside an evaluate call.
Should I trigger the events from the HTML file itself, and in the callbacks, print in the DOM the result, in some dummy-element, and then infer from that dummy element text that the callbacks fired?
Exactly, or you can assign values to a javascript variable:
const cPicker = new ColorPicker({
onClickOutside(e){
},
onInput(color){
window['color'] = color;
},
onChange(color){
window['result'] = color;
}
})
And then
it('Should call all callbacks with correct arguments', async() => {
await page.goto(`http://localhost:5000/tests/visual/basic.html`, {waitUntil:'load'})
// Wait until the next frame
await page.evaluate(() => new Promise(requestAnimationFrame))
// Act
// Assert
const result = await page.evaluate(() => window['color']);
// Check the value
})
Check out the latest blogs from LambdaTest on this topic:
Native apps are developed specifically for one platform. Hence they are fast and deliver superior performance. They can be downloaded from various app stores and are not accessible through browsers.
One of the essential parts when performing automated UI testing, whether using Selenium or another framework, is identifying the correct web elements the tests will interact with. However, if the web elements are not located correctly, you might get NoSuchElementException in Selenium. This would cause a false negative result because we won’t get to the actual functionality check. Instead, our test will fail simply because it failed to interact with the correct element.
Smartphones have changed the way humans interact with technology. Be it travel, fitness, lifestyle, video games, or even services, it’s all just a few touches away (quite literally so). We only need to look at the growing throngs of smartphone or tablet users vs. desktop users to grasp this reality.
As part of one of my consulting efforts, I worked with a mid-sized company that was looking to move toward a more agile manner of developing software. As with any shift in work style, there is some bewilderment and, for some, considerable anxiety. People are being challenged to leave their comfort zones and embrace a continuously changing, dynamic working environment. And, dare I say it, testing may be the most ‘disturbed’ of the software roles in agile development.
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!!