Best JavaScript code snippet using playwright-internal
get-background-color.js
Source:get-background-color.js
...12 '</div></div>';13 var target = fixture.querySelector('#target');14 var parent = fixture.querySelector('#parent');15 var bgNodes = [];16 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);17 var expected = new axe.commons.color.Color(128, 0, 0, 1);18 assert.closeTo(actual.red, expected.red, 0.5);19 assert.closeTo(actual.green, expected.green, 0.5);20 assert.closeTo(actual.blue, expected.blue, 0.5);21 assert.closeTo(actual.alpha, expected.alpha, 0.1);22 assert.deepEqual(bgNodes, [parent]);23 });24 it('should return the blended color if it is transparent and positioned', function () {25 fixture.innerHTML = '<div style="position: absolute; top: 0px; left: 0px; height: 100px; ' +26 'width: 90px; background-color: #000080;">' +27 '<div id="pos" style="position: absolute; top: 50px; left: 40px; height: 40px; ' +28 'width: 30px; background-color: #800000;"></div>' +29 '<div id="parent" style="position: absolute; top: 0px; left: 0px; height: 40px; ' +30 'width: 30px; background-color: #ffffff">' +31 '<div id="target" style="position: absolute; top: 60px; left: 45px; height: 20px; ' +32 'width: 15px; background-color: rgba(0, 128, 0, 0.5);">' +33 '</div></div></div>';34 var target = fixture.querySelector('#target');35 var pos = fixture.querySelector('#pos');36 var bgNodes = [];37 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);38 var expected = new axe.commons.color.Color(64, 64, 0, 1);39 assert.closeTo(actual.red, expected.red, 0.5);40 assert.closeTo(actual.green, expected.green, 0.5);41 assert.closeTo(actual.blue, expected.blue, 0.5);42 assert.closeTo(actual.alpha, expected.alpha, 0.1);43 assert.deepEqual(bgNodes, [target, pos]);44 });45 it('should do alpha blending from the back forward', function () {46 fixture.innerHTML = '<div id="under" style="height: 20px; width: 15px; background-color: #800000;">' +47 '<div id="transparent" style="height: 20px; width: 15px; background-color: rgba(0, 0, 0, 0);">' +48 '<div id="target" style="height: 20px; width: 15px; background-color: rgba(0, 128, 0, 0.5);">' +49 '</div></div></div>';50 var target = fixture.querySelector('#target');51 var under = fixture.querySelector('#under');52 var bgNodes = [];53 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);54 var expected = new axe.commons.color.Color(64, 64, 0, 1);55 assert.closeTo(actual.red, expected.red, 0.5);56 assert.closeTo(actual.green, expected.green, 0.5);57 assert.closeTo(actual.blue, expected.blue, 0.5);58 assert.closeTo(actual.alpha, expected.alpha, 0.1);59 assert.deepEqual(bgNodes, [target, under]);60 });61 it('should only look at what is underneath original element when blended and positioned', function () {62 fixture.innerHTML = '<div style="position: absolute; top: 0px; left: 0px; height: 100px; ' +63 'width: 90px; background-color: #000080;">' +64 '<div id="under" style="position: absolute; top: 50px; left: 40px; height: 40px; ' +65 'width: 30px; background-color: #800000;"></div>' +66 '<div id="pos" style="position: absolute; top: 0px; left: 0px; height: 90px; ' +67 'width: 70px; background-color: rgba(0, 0, 0, 0);"></div>' +68 '<div id="parent" style="position: absolute; top: 0px; left: 0px; height: 40px; ' +69 'width: 30px; background-color: #ffffff">' +70 '<div id="target" style="position: absolute; top: 60px; left: 45px; height: 20px; ' +71 'width: 15px; background-color: rgba(0, 128, 0, 0.5);">' +72 '</div></div></div>';73 var target = fixture.querySelector('#target');74 var under = fixture.querySelector('#under');75 var bgNodes = [];76 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);77 var expected = new axe.commons.color.Color(64, 64, 0, 1);78 assert.closeTo(actual.red, expected.red, 0.5);79 assert.closeTo(actual.green, expected.green, 0.5);80 assert.closeTo(actual.blue, expected.blue, 0.5);81 assert.closeTo(actual.alpha, expected.alpha, 0.1);82 assert.deepEqual(bgNodes, [target, under]);83 });84 it('should return the proper blended color if it has alpha set', function () {85 fixture.innerHTML = '<div id="parent" style="height: 40px; width: 30px; background-color: #800000;">' +86 '<div id="target" style="height: 20px; width: 15px; background-color: rgba(0, 128, 0, 0.5);">' +87 '</div></div>';88 var target = fixture.querySelector('#target');89 var parent = fixture.querySelector('#parent');90 var bgNodes = [];91 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);92 var expected = new axe.commons.color.Color(64, 64, 0, 1);93 assert.closeTo(actual.red, expected.red, 0.5);94 assert.closeTo(actual.green, expected.green, 0.5);95 assert.closeTo(actual.blue, expected.blue, 0.5);96 assert.closeTo(actual.alpha, expected.alpha, 0.1);97 assert.deepEqual(bgNodes, [target, parent]);98 });99 it('should return the blended color if it has opacity set', function () {100 fixture.innerHTML = '<div id="parent" style="height: 40px; width: 30px; background-color: #800000;">' +101 '<div id="target" style="height: 20px; width: 15px; opacity: 0.5; background-color: green;">' +102 '</div></div>';103 var target = fixture.querySelector('#target');104 var parent = fixture.querySelector('#parent');105 var bgNodes = [];106 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);107 var expected = new axe.commons.color.Color(64, 64, 0, 1);108 assert.equal(actual.red, expected.red);109 assert.equal(actual.green, expected.green);110 assert.equal(actual.blue, expected.blue);111 assert.equal(actual.alpha, expected.alpha);112 assert.deepEqual(bgNodes, [target, parent]);113 });114 it('should return null if containing parent has a background image and is non-opaque', function () {115 fixture.innerHTML = '<div id="parent" style="height: 40px; width: 30px;' +116 'background-color: #800000; background-image: url(image.png);">' +117 '<div id="target" style="height: 20px; width: 15px; background-color: green; opacity: 0.5;">' +118 '</div></div>';119 var target = fixture.querySelector('#target');120 var parent = fixture.querySelector('#parent');121 var bgNodes = [];122 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);123 assert.isNull(actual);124 assert.deepEqual(bgNodes, [target, parent]);125 assert.equal(axe.commons.color.incompleteData.get('bgColor'), 'bgImage');126 });127 it('should return white if transparency goes all the way up to document', function () {128 fixture.innerHTML = '<div id="target" style="height: 10px; width: 30px;">';129 var target = fixture.querySelector('#target');130 var actual = axe.commons.color.getBackgroundColor(target);131 var expected = new axe.commons.color.Color(255, 255, 255, 1);132 assert.equal(actual.red, expected.red);133 assert.equal(actual.green, expected.green);134 assert.equal(actual.blue, expected.blue);135 assert.equal(actual.alpha, expected.alpha);136 });137 it('should return null if there is a background image', function () {138 fixture.innerHTML = '<div style="height: 40px; width: 30px; background-color: #800000;">' +139 '<div id="target" style="height: 20px; width: 15px; background-color: green; background-image: url(image.png);">' +140 '</div></div>';141 var target = fixture.querySelector('#target');142 var bgNodes = [];143 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);144 assert.isNull(actual);145 assert.deepEqual(bgNodes, [target]);146 assert.equal(axe.commons.color.incompleteData.get('bgColor'), 'bgImage');147 });148 it('should return null if something opaque is obscuring it', function () {149 fixture.innerHTML = '<div style="width:100%; height: 100px; background: #000"></div>' +150 '<div id="target" style="position: relative; top: -50px; z-index:-1;color:#fff;">Hello</div>';151 var actual = axe.commons.color.getBackgroundColor(document.getElementById('target'), []);152 assert.equal(axe.commons.color.incompleteData.get('bgColor'), 'bgOverlap');153 assert.isNull(actual);154 });155 it('should return an actual if something non-opaque is obscuring it', function () {156 fixture.innerHTML = '<div style="width:100%; height: 100px; background: rgba(0, 0, 0, 0.5)"></div>' +157 '<div id="target" style="position: relative; top: -50px; z-index:-1;color:#fff;">Hello</div>';158 var actual = axe.commons.color.getBackgroundColor(document.getElementById('target'), []);159 assert.isNotNull(actual);160 assert.equal(Math.round(actual.blue), 128);161 assert.equal(Math.round(actual.red), 128);162 assert.equal(Math.round(actual.green), 128);163 });164 it('should return the bgcolor if it is solid', function () {165 fixture.innerHTML = '<div style="height: 40px; width: 30px; background-color: red;">' +166 '<div id="target" style="height: 20px; width: 15px; background-color: green;">' +167 '</div></div>';168 var target = fixture.querySelector('#target');169 var bgNodes = [];170 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);171 var expected = new axe.commons.color.Color(0, 128, 0, 1);172 assert.equal(actual.red, expected.red);173 assert.equal(actual.green, expected.green);174 assert.equal(actual.blue, expected.blue);175 assert.equal(actual.alpha, expected.alpha);176 assert.deepEqual(bgNodes, [target]);177 });178 it('should count a TR as a background element for TD', function () {179 fixture.innerHTML = '<div style="background-color:#007acc;">' +180 '<table style="width:100%">' +181 '<tr style="background-color:#f3f3f3; height:40px;" id="parent">' +182 '<td style="color:#007acc" id="target">' +183 'Cell content</td>' +184 '</tr>' +185 '</table></div>';186 var target = fixture.querySelector('#target'),187 parent = fixture.querySelector('#parent');188 var bgNodes = [];189 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);190 var expected = new axe.commons.color.Color(243, 243, 243, 1);191 assert.equal(actual.red, expected.red);192 assert.equal(actual.green, expected.green);193 assert.equal(actual.blue, expected.blue);194 assert.equal(actual.alpha, expected.alpha);195 assert.deepEqual(bgNodes, [parent]);196 });197 it('should count a TR as a background element for TH', function () {198 fixture.innerHTML = '<div style="background-color:#007acc;">' +199 '<table style="width:100%">' +200 '<tr style="background-color:#f3f3f3; height:40px;" id="parent">' +201 '<th style="color:#007acc" id="target">' +202 'Header content</th>' +203 '</tr>' +204 '</table></div>';205 var target = fixture.querySelector('#target'),206 parent = fixture.querySelector('#parent');207 var bgNodes = [];208 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);209 var expected = new axe.commons.color.Color(243, 243, 243, 1);210 assert.equal(actual.red, expected.red);211 assert.equal(actual.green, expected.green);212 assert.equal(actual.blue, expected.blue);213 assert.equal(actual.alpha, expected.alpha);214 assert.deepEqual(bgNodes, [parent]);215 });216 it('should count a TR as a background element for a child element', function () {217 fixture.innerHTML = '<div style="background-color:#007acc;">' +218 '<table style="width:100%">' +219 '<tr style="background-color:#f3f3f3; height:40px;" id="parent">' +220 '<td>' +221 '<span style="color:#007acc" id="target">Cell content</span>' +222 '</td></tr>' +223 '</table></div>';224 var target = fixture.querySelector('#target'),225 parent = fixture.querySelector('#parent');226 var bgNodes = [];227 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);228 var expected = new axe.commons.color.Color(243, 243, 243, 1);229 assert.equal(actual.red, expected.red);230 assert.equal(actual.green, expected.green);231 assert.equal(actual.blue, expected.blue);232 assert.equal(actual.alpha, expected.alpha);233 assert.deepEqual(bgNodes, [parent]);234 });235 it('should ignore TR elements that don\'t overlap', function () {236 fixture.innerHTML = '<table style="position:relative; width:100%;">' +237 '<tr style="background-color:black; height:10px; width:100%;" id="parent">' +238 '<td style="position:absolute; top: 14px;" id="target">Content</td>'+239 '</tr></table>';240 var bgNodes = [];241 var target = fixture.querySelector('#target');242 var parent = fixture.querySelector('#parent');243 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);244 var expected = new axe.commons.color.Color(255, 255, 255, 1);245 assert.equal(actual.red, expected.red);246 assert.equal(actual.green, expected.green);247 assert.equal(actual.blue, expected.blue);248 assert.equal(actual.alpha, expected.alpha);249 assert.notEqual(bgNodes, [parent]);250 });251 it('should count an implicit label as a background element', function () {252 fixture.innerHTML = '<label id="target" style="background-color: #fff;">My label' +253 '<input type="text">' +254 '</label>';255 var target = fixture.querySelector('#target');256 var bgNodes = [];257 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);258 var expected = new axe.commons.color.Color(255, 255, 255, 1);259 assert.equal(actual.red, expected.red);260 assert.equal(actual.green, expected.green);261 assert.equal(actual.blue, expected.blue);262 assert.equal(actual.alpha, expected.alpha);263 });264 it('should ignore inline ancestors of non-overlapping elements', function () {265 fixture.innerHTML = '<div style="position:relative;">'+266 '<label style="background-color:black;" id="parent">Label' +267 '<input style="position:absolute; top:20px;" id="target">'+268 '</label></div>';269 var target = fixture.querySelector('#target');270 var parent = fixture.querySelector('#parent');271 var bgNodes = [];272 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);273 var expected = new axe.commons.color.Color(255, 255, 255, 1);274 assert.equal(actual.red, expected.red);275 assert.equal(actual.green, expected.green);276 assert.equal(actual.blue, expected.blue);277 assert.equal(actual.alpha, expected.alpha);278 assert.notEqual(bgNodes, [parent]);279 });280 it('should handle multiple ancestors of the same name', function () {281 fixture.innerHTML = '<div style="background-color: #007acc;">' +282 '<table style="width: 100%;">' +283 '<tr style="background-color: #fff;"><td>' +284 '<table style="width:100%">' +285 '<tr style="background-color: #f3f3f3; height:40px;" id="parent">' +286 '<td style="display: table-cell; color:#007acc" id="target">' +287 'Cell content</td>' +288 '</tr>' +289 '</table>' +290 '</td></tr>' +291 '</table></div>';292 var target = fixture.querySelector('#target'),293 parent = fixture.querySelector('#parent');294 var bgNodes = [];295 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);296 var expected = new axe.commons.color.Color(243, 243, 243, 1);297 assert.equal(actual.red, expected.red);298 assert.equal(actual.green, expected.green);299 assert.equal(actual.blue, expected.blue);300 assert.equal(actual.alpha, expected.alpha);301 assert.deepEqual(bgNodes, [parent]);302 });303 it('should use hierarchical DOM traversal if possible', function () {304 fixture.innerHTML =305 '<div id="parent" style="height: 40px; width: 30px; ' +306 ' background-color: white;">' +307 ' <div id="target" style="height: 20px; width: 25px; z-index: 25; position:relative;">' +308 ' </div>' +309 '</div>' +310 '<div id="shifted" style="position: relative; top: -10px; height: 40px; width: 35px; ' +311 ' background-color: black; z-index: 15;"></div>';312 var target = fixture.querySelector('#target');313 var parent = fixture.querySelector('#parent');314 var bgNodes = [];315 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);316 var expected = new axe.commons.color.Color(255, 255, 255, 1);317 assert.closeTo(actual.red, expected.red, 0.5);318 assert.closeTo(actual.green, expected.green, 0.5);319 assert.closeTo(actual.blue, expected.blue, 0.5);320 assert.closeTo(actual.alpha, expected.alpha, 0.1);321 assert.deepEqual(bgNodes, [parent]);322 });323 it('should ignore 0-height elements', function () {324 fixture.innerHTML =325 '<div id="parent" style="height: 40px; width: 30px; ' +326 'background-color: white; position: relative; z-index: 5">' +327 ' <div float="left" style="height: 0px; background-color: black">' +328 ' <div id="target" style="height: 20px; width: 25px; z-index: 25;">' +329 '</div></div></div>';330 var target = fixture.querySelector('#target');331 var parent = fixture.querySelector('#parent');332 var bgNodes = [];333 var actual = axe.commons.color.getBackgroundColor(target, bgNodes);334 var expected = new axe.commons.color.Color(255, 255, 255, 1);335 assert.closeTo(actual.red, expected.red, 0.5);336 assert.closeTo(actual.green, expected.green, 0.5);337 assert.closeTo(actual.blue, expected.blue, 0.5);338 assert.closeTo(actual.alpha, expected.alpha, 0.1);339 assert.deepEqual(bgNodes, [parent]);340 });341 it('should use visual traversal when needed', function () {342 fixture.innerHTML =343 '<div id="parent" style="height: 40px; width: 30px; ' +344 ' background-color: white; position: relative; z-index: 5">' +345 ' <div id="target" style="position: relative; top: 1px; height: 20px; width: 25px; z-index: 25;">' +346 ' </div>' +347 '<div id="shifted" style="position: relative; top: -30px; height: 40px; width: 35px; ' +348 ' background-color: black; z-index: 15;"></div></div>';349 var target = fixture.querySelector('#target');350 var shifted = fixture.querySelector('#shifted');351 var bgNodes = [];352 var actual = axe.commons.color.getBackgroundColor(target, bgNodes, false);353 var expected = new axe.commons.color.Color(0, 0, 0, 1);354 assert.deepEqual(bgNodes, [shifted]);355 assert.closeTo(actual.red, expected.red, 0.5);356 assert.closeTo(actual.green, expected.green, 0.5);357 assert.closeTo(actual.blue, expected.blue, 0.5);358 assert.closeTo(actual.alpha, expected.alpha, 0.1);359 });360 it('should return null when encountering background images during visual traversal', function () {361 fixture.innerHTML =362 '<div id="parent" style="height: 40px; width: 30px; ' +363 ' background-color: white; position: relative; z-index: 5"> ' +364 ' <div id="target" style="position: relative; top: 1px; height: 20px;' +365 ' width: 25px; z-index: 25; background:rgba(0,125,0,0.5);"></div> ' +366 ' <div id="shifted" style="position: absolute; top: 0px; height: 40px; ' +367 ' background-image: url(foobar.png);'+368 ' width: 35px; z-index: 15;">' +369 ' </div>'+370 '</div>';371 var target = fixture.querySelector('#target');372 var bgNodes = [];373 var outcome = axe.commons.color.getBackgroundColor(target, bgNodes, false);374 assert.isNull(outcome);375 assert.equal(axe.commons.color.incompleteData.get('bgColor'), 'bgImage');376 });377 it('should return null when encountering image nodes during visual traversal', function () {378 fixture.innerHTML =379 '<div id="parent" style="height: 40px; width: 30px; ' +380 ' background-color: white; position: relative; z-index: 5"> ' +381 ' <div id="shifted" style="position: absolute; top: -10px; height: 40px; ' +382 ' width: 35px; z-index: 15;">' +383 ' <img src="some-img.png" width="35" height="40">' +384 ' </div>'+385 ' <div id="target" style="position: relative; top: 1px; height: 20px;' +386 ' width: 25px; z-index: 25; background:rgba(0,125,0,0.5);"></div> ' +387 '</div>';388 var target = fixture.querySelector('#target');389 var bgNodes = [];390 var outcome = axe.commons.color.getBackgroundColor(target, bgNodes, false);391 assert.isNull(outcome);392 assert.equal(axe.commons.color.incompleteData.get('bgColor'), 'imgNode');393 });394 it('does not change the scroll when scroll is disabled', function() {395 fixture.innerHTML = '<div id="parent" style="height: 40px; width: 30px; ' +396 'background-color: white; position: relative; z-index: 5">' +397 '<div id="target" style="position: relative; top: 1px; height: 20px; ' +398 'width: 25px; z-index: 25;">' + '</div>';399 var targetEl = fixture.querySelector('#target');400 var bgNodes = [];401 window.scroll(0, 0);402 axe.commons.color.getBackgroundColor(targetEl, bgNodes, true);403 assert.equal(window.pageYOffset, 0);404 });405 it('scrolls into view when scroll is enabled', function() {406 fixture.innerHTML = '<div id="parent" style="height: 5000px; width: 30px; ' +407 'background-color: white; position: relative; z-index: 5">' +408 '<div id="target" style="position: absolute; bottom: 0; height: 20px; ' +409 'width: 25px; z-index: 25;">' + '</div>';410 var targetEl = fixture.querySelector('#target');411 var bgNodes = [];412 window.scroll(0, 0);413 axe.commons.color.getBackgroundColor(targetEl, bgNodes, false);414 assert.notEqual(window.pageYOffset, 0);415 });416 it('returns elements with negative z-index', function () {417 fixture.innerHTML = '<div id="sibling" ' + 418 'style="z-index:-1; position:absolute; width:100%; height:2em; background: #000"></div>' +419 '<div id="target">Some text</div>';420 var actual = axe.commons.color.getBackgroundColor(document.getElementById('target'), []);421 var expected = new axe.commons.color.Color(0, 0, 0, 1);422 assert.closeTo(actual.red, expected.red, 0.5);423 assert.closeTo(actual.green, expected.green, 0.5);424 assert.closeTo(actual.blue, expected.blue, 0.5);425 assert.closeTo(actual.alpha, expected.alpha, 0.1);426 });427 it('returns negative z-index elements when body has a background', function () {428 fixture.innerHTML = '<div id="sibling" ' + 429 'style="z-index:-1; position:absolute; width:100%; height:2em; background: #000"></div>' +430 '<div id="target">Some text</div>';431 var orig = document.body.style.background;432 document.body.style.background = '#FFF';433 var actual = axe.commons.color.getBackgroundColor(document.getElementById('target'), []);434 var expected = new axe.commons.color.Color(0, 0, 0, 1);435 assert.closeTo(actual.red, expected.red, 0.5);436 assert.closeTo(actual.green, expected.green, 0.5);437 assert.closeTo(actual.blue, expected.blue, 0.5);438 assert.closeTo(actual.alpha, expected.alpha, 0.1);439 document.body.style.background = orig;440 });441 it('returns the body background', function () {442 fixture.innerHTML = '<div id="target">elm</div>';443 var orig = document.body.style.background;444 document.body.style.background = '#F00';445 var actual = axe.commons.color.getBackgroundColor(document.getElementById('target'), []);446 var expected = new axe.commons.color.Color(255, 0, 0, 1);447 document.body.style.background = orig;448 assert.closeTo(actual.red, expected.red, 0.5);449 assert.closeTo(actual.green, expected.green, 0.5);450 assert.closeTo(actual.blue, expected.blue, 0.5);451 assert.closeTo(actual.alpha, expected.alpha, 0.1);452 });453 it('returns the body background even when the body is MUCH larger than the screen', function () {454 fixture.innerHTML = '<div id="target" style="height:20000px;">elm</div>';455 var orig = document.body.style.background;456 document.body.style.background = '#F00';457 var actual = axe.commons.color.getBackgroundColor(document.getElementById('target'), []);458 var expected = new axe.commons.color.Color(255, 0, 0, 1);459 document.body.style.background = orig;460 assert.closeTo(actual.red, expected.red, 0.5);461 assert.closeTo(actual.green, expected.green, 0.5);462 assert.closeTo(actual.blue, expected.blue, 0.5);463 assert.closeTo(actual.alpha, expected.alpha, 0.1);464 });465 it('returns the html background', function () {466 fixture.innerHTML = '<div id="target"><label>elm<input></label></div>';467 var orig = document.documentElement.style.background;468 document.documentElement.style.background = '#0F0';469 var actual = axe.commons.color.getBackgroundColor(document.getElementById('target'), []);470 var expected = new axe.commons.color.Color(0, 255, 0, 1);471 document.documentElement.style.background = orig;472 assert.closeTo(actual.red, expected.red, 0.5);473 assert.closeTo(actual.green, expected.green, 0.5);474 assert.closeTo(actual.blue, expected.blue, 0.5);475 assert.closeTo(actual.alpha, expected.alpha, 0.1);476 });477 it('avoids scrolling elements with overflow:hidden', function () {478 fixture.innerHTML =479 '<div style="position:relative; color: yellow">' +480 '<div style="overflow: hidden">' +481 '<div style="background: black; height: 40px; padding-top: 20px;">' +482 '<div id="tgt1">Some text here</div>' +483 '<div style="height: 100px;"></div>' +484 '</div>' +485 '</div>' +486 '<div style="position: absolute; margin-top: -20px;" id="tgt2">R_20</div>' +487 '</div>';488 // This shouldn't cause a scroll489 var target1 = document.getElementById('tgt1');490 axe.commons.color.getBackgroundColor(target1, []);491 // Otherwise this would not be on the black bg anymore:492 var target2 = document.getElementById('tgt2');493 var actual = axe.commons.color.getBackgroundColor(target2, []);494 assert.closeTo(actual.red, 0, 0.5);495 assert.closeTo(actual.green, 0, 0.5);496 assert.closeTo(actual.blue, 0, 0.5);497 assert.closeTo(actual.alpha, 1, 0.1);498 });...
devcss_test.js
Source:devcss_test.js
...90function testActivateBrowserSpecificCssALL() {91 // equals GECKO92 var devcssInstance = new goog.debug.DevCss('GECKO');93 devcssInstance.activateBrowserSpecificCssRules(false);94 var backgroundColor = goog.style.getBackgroundColor(el);95 assertEquals('rgb(255,192,203)', spaceless(backgroundColor));96 // GECKO test case w/ two selectors joined by a commma.97 var elGeckoOne = document.getElementById('devcss-gecko-1');98 backgroundColor = goog.style.getBackgroundColor(elGeckoOne);99 assertEquals('rgb(255,192,203)', spaceless(backgroundColor));100 var elGeckoTwo = document.getElementById('devcss-gecko-2');101 backgroundColor = goog.style.getBackgroundColor(elGeckoTwo);102 assertEquals('rgb(255,192,203)', spaceless(backgroundColor));103}104function testActivateBrowserSpecificCssWithVersion() {105 // equals IE 6106 var devcssInstance = new goog.debug.DevCss('IE', '6');107 devcssInstance.activateBrowserSpecificCssRules(false);108 var elIe6 = document.getElementById('devcss-test-ie6');109 var backgroundColor = goog.style.getBackgroundColor(elIe6);110 assertEquals('rgb(255,192,203)', spaceless(backgroundColor));111 // IE8 test case w/ two selectors joined by a commma.112 var devCssInstanceTwo = new goog.debug.DevCss('IE', '8');113 devCssInstanceTwo.activateBrowserSpecificCssRules(false);114 var elIe8One = document.getElementById('devcss-ie8-1');115 backgroundColor = goog.style.getBackgroundColor(elIe8One);116 assertEquals('rgb(255,192,203)', spaceless(backgroundColor));117 var elIe8Two = document.getElementById('devcss-ie8-2');118 backgroundColor = goog.style.getBackgroundColor(elIe8Two);119 assertEquals('rgb(255,192,203)', spaceless(backgroundColor));120}121function testActivateBrowserSpecificCssGteInvalid() {122 // WEBKIT_GTE255123 var marginBox = goog.style.getMarginBox(el);124 assertEquals(1, marginBox.top); // should still be 1125 var devcssInstance = new goog.debug.DevCss('WEBKIT', 254);126 devcssInstance.activateBrowserSpecificCssRules(false);127 var marginBox = goog.style.getMarginBox(el);128 assertEquals(1, marginBox.top); // should still be 1129}130function testActivateBrowserSpecificCssGteValid() {131 var devcssInstance = new goog.debug.DevCss('WEBKIT', 255);132 devcssInstance.activateBrowserSpecificCssRules(false);133 var marginBox = goog.style.getMarginBox(el);134 assertEquals(20, marginBox.top);135}136function testActivateBrowserSpecificCssLteInvalid() {137 // IE_LTE6138 var marginBox = goog.style.getMarginBox(el);139 assertEquals(1, marginBox.left); // should still be 1140 var devcssInstance = new goog.debug.DevCss('WEBKIT', 202);141 devcssInstance.activateBrowserSpecificCssRules(false);142 var marginBox = goog.style.getMarginBox(el);143 assertEquals(1, marginBox.left); // should still be 1144}145function testActivateBrowserSpecificCssLteValid() {146 var devcssInstance = new goog.debug.DevCss('WEBKIT', 199);147 devcssInstance.activateBrowserSpecificCssRules(false);148 var marginBox = goog.style.getMarginBox(el);149 assertEquals(15, marginBox.left);150}151function testReplaceIe6Selectors() {152 var devcssInstance = new goog.debug.DevCss('IE', 6);153 devcssInstance.activateBrowserSpecificCssRules(false);154 // It should correctly be transparent, even in IE6.155 var compound2El = document.getElementById('devcss-test-compound2');156 var backgroundColor = spaceless(goog.style.getBackgroundColor(compound2El));157 assertTrue(158 'Unexpected background color: ' + backgroundColor,159 'transparent' == backgroundColor || 'rgba(0,0,0,0)' == backgroundColor);160 // And this one should have the combined selector working, even in161 // IE6.162 backgroundColor = goog.style.getBackgroundColor(163 document.getElementById('devcss-test-compound1-2'));164 assertEquals('rgb(255,192,203)', spaceless(backgroundColor));165}166/*167 * TODO(user): Re-enable if we ever come up with a way to make imports168 * work.169function testDisableDuplicateStyleSheetImports() {170 var el1 = document.getElementById('devcss-test-importfixer-1');171 var el2 = document.getElementById('devcss-test-importfixer-2');172 var backgroundColor = goog.style.getBackgroundColor(el1);173 assertEquals('rgb(255,255,0)', spaceless(backgroundColor));174 var backgroundColor = goog.style.getBackgroundColor(el2);175 assertEquals('rgb(255,0,0)', spaceless(backgroundColor));176 // This should disable the second coming of devcss_test_import_1.css.177 var devcssInstance = new goog.debug.DevCss();178 devcssInstance.disableDuplicateStyleSheetImports();179 var backgroundColor = goog.style.getBackgroundColor(el1);180 assertEquals('rgb(255,255,0)', spaceless(backgroundColor));181 var backgroundColor = goog.style.getBackgroundColor(el2);182 assertEquals('rgb(173,216,230)', spaceless(backgroundColor));183}...
browser_windowactivation.js
Source:browser_windowactivation.js
...41 // while another window is focused. The third check is done after that window42 // is closed and the main window focused again. The fourth check is done after43 // switching to the second tab.44 // Step 1 - check the initial state45 let colorChromeBrowser1 = await getBackgroundColor(chromeBrowser1, true);46 let colorChromeBrowser2 = await getBackgroundColor(chromeBrowser2, true);47 let colorHttpBrowser = await getBackgroundColor(httpBrowser, true);48 is(colorChromeBrowser1, "rgba(0, 0, 0, 0)", "first tab initial");49 is(colorChromeBrowser2, "rgba(0, 0, 0, 0)", "second tab initial");50 is(colorHttpBrowser, "rgba(0, 0, 0, 0)", "third tab initial");51 // Step 2 - open and focus another window52 let otherWindow = window.open(testPageWindow, "", "chrome");53 await SimpleTest.promiseFocus(otherWindow);54 colorChromeBrowser1 = await getBackgroundColor(chromeBrowser1, false);55 colorChromeBrowser2 = await getBackgroundColor(chromeBrowser2, false);56 colorHttpBrowser = await getBackgroundColor(httpBrowser, false);57 is(colorChromeBrowser1, "rgb(255, 0, 0)", "first tab lowered");58 is(colorChromeBrowser2, "rgb(255, 0, 0)", "second tab lowered");59 is(colorHttpBrowser, "rgb(255, 0, 0)", "third tab lowered");60 // Step 3 - close the other window again61 otherWindow.close();62 colorChromeBrowser1 = await getBackgroundColor(chromeBrowser1, true);63 colorChromeBrowser2 = await getBackgroundColor(chromeBrowser2, true);64 colorHttpBrowser = await getBackgroundColor(httpBrowser, true);65 is(colorChromeBrowser1, "rgba(0, 0, 0, 0)", "first tab raised");66 is(colorChromeBrowser2, "rgba(0, 0, 0, 0)", "second tab raised");67 is(colorHttpBrowser, "rgba(0, 0, 0, 0)", "third tab raised");68 // Step 4 - switch to the second tab69 gBrowser.selectedTab = chromeTab2;70 colorChromeBrowser1 = await getBackgroundColor(chromeBrowser1, true);71 colorChromeBrowser2 = await getBackgroundColor(chromeBrowser2, true);72 colorHttpBrowser = await getBackgroundColor(httpBrowser, true);73 is(colorChromeBrowser1, "rgba(0, 0, 0, 0)", "first tab after tab switch");74 is(colorChromeBrowser2, "rgba(0, 0, 0, 0)", "second tab after tab switch");75 is(colorHttpBrowser, "rgba(0, 0, 0, 0)", "third tab after tab switch");76 BrowserTestUtils.removeTab(chromeTab1);77 BrowserTestUtils.removeTab(chromeTab2);78 BrowserTestUtils.removeTab(httpTab);79 otherWindow = null;80});81function getBackgroundColor(browser, expectedActive) {82 return SpecialPowers.spawn(83 browser,84 [!expectedActive],85 async hasPseudoClass => {86 let area = content.document.getElementById("area");87 await ContentTaskUtils.waitForCondition(() => {88 return area;89 }, "Page has loaded");90 await ContentTaskUtils.waitForCondition(() => {91 return area.matches(":-moz-window-inactive") == hasPseudoClass;92 }, `Window is considered ${hasPseudoClass ? "inactive" : "active"}`);93 return content.getComputedStyle(area).backgroundColor;94 }95 );...
Appearance.js
Source:Appearance.js
...32 a.setAppearance("test");33 this.getRoot().add(a);34 a.getChildControl("text");35 this.flush();36 this.assertEquals("red", a.getBackgroundColor());37 this.assertEquals("blue", a.getChildControl("text").getBackgroundColor());38 a.destroy();39 },40 testFallback : function()41 {42 var a = new qx.test.ui.core.Test();43 a.setAppearance("test2");44 this.getRoot().add(a);45 a.getChildControl("text");46 this.flush();47 this.assertEquals("yellow", a.getBackgroundColor());48 this.assertEquals("green", a.getChildControl("text").getBackgroundColor());49 a.destroy();50 },51 testChange : function()52 {53 var a = new qx.test.ui.core.Test();54 a.setAppearance("test2");55 this.getRoot().add(a);56 a.getChildControl("text");57 this.flush();58 this.assertEquals("yellow", a.getBackgroundColor());59 this.assertEquals("green", a.getChildControl("text").getBackgroundColor());60 a.setAppearance("test");61 this.flush();62 this.assertEquals("red", a.getBackgroundColor());63 this.assertEquals("blue", a.getChildControl("text").getBackgroundColor());64 a.destroy();65 },66 testReuseNotDefined : function() {67 var a = new qx.test.ui.core.Test();68 a.setAppearance("test");69 this.getRoot().add(a);70 a.getChildControl("text");71 a.getChildControl("text2").setAppearance("nix");72 this.flush();73 this.assertEquals("red", a.getBackgroundColor());74 this.assertEquals("blue", a.getChildControl("text").getBackgroundColor());75 a.setAppearance("test2");76 this.flush();77 this.assertEquals("yellow", a.getBackgroundColor());78 this.assertEquals("black", a.getChildControl("text2").getBackgroundColor());79 // check for the textfield fallback80 this.assertEquals("green", a.getChildControl("text").getBackgroundColor());81 a.destroy();82 }83 }84});85qx.Theme.define("qx.test.ui.core.Theme", {86 appearances :87 {88 "test" : {89 style : function(states)90 {91 return {92 backgroundColor : "red"93 };94 }...
email-validation.js
Source:email-validation.js
...1213 if (validateEmail(email) && (email[email.length - 2] + email[email.length - 1]) == "co") {14 document.getElementById("validation").innerHTML = "We are not accepting subscriptions from Colombia emails";15 isValid = false;16 getBackgroundColor()17 } else if (validateEmail(email)) {18 document.getElementById("validation").innerHTML = "";19 isValid = true;20 getBackgroundColor()21 } else if (email === "") {22 document.getElementById("validation").innerHTML = "Email address is required";23 isValid = false;24 getBackgroundColor()25 } else {26 document.getElementById("validation").innerHTML = "Please provide a valid e-mail address";27 isValid = false;28 getBackgroundColor()29 }30}31//TOS validation32function isChecked() {33 if (!document.querySelector('.checkbox').checked) {34 document.getElementById("is-checked").innerHTML = "You must accept the terms and conditions";35 isChedked = false;36 getBackgroundColor()37 } else {38 document.getElementById("is-checked").innerHTML = "";39 isChedked = true;40 getBackgroundColor()41 }42}4344//Changes the background of the validation message45function getBackgroundColor() {46 if (!isChedked || !isValid) {47 document.querySelector("#validation-message").style.background = "#FF665A";48 } else {49 document.querySelector("#validation-message").style.background = transparent;50 }
...
simple.js
Source:simple.js
...12 const getBackgroundColor = () => {13 return { backgroundColor: 'red' };14 };15 return (16 <View style={[ getBackgroundColor(), { padding: 10 } ]}>17 <Text style={{ color: 'blue', fontSize: 25 }}>18 Hello world19 </Text>20 </View>21 );22};23const styles = StyleSheet.create({24 container: {25 padding: 10,26 },27 containerText: {28 color: 'blue',29 fontSize: 20,30 },31});32class ExampleComponent extends Component {33 getBackgroundColor() {34 return {35 backgroundColor: 'yellow'36 };37 }38 render() {39 return (40 <View style={[ 41 this.getBackgroundColor(),42 styles.container 43 ]}>44 <Text style={styles.containerText}>45 Hello world46 </Text>47 </View>48 );49 }50}51// For book content52export class Simple extends Component {53 render() {54 return (55 <View style={styles.container}>...
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 const color = await page.getBackgroundColor("text=Get started");7 console.log(color);8 await browser.close();9})();10const { chromium } = require("playwright");11(async () => {12 const browser = await chromium.launch();13 const context = await browser.newContext();14 const page = await context.newPage();15 const color = await page.getBackgroundColor("text=Get started");16 console.log(color);17 await browser.close();18})();19const { chromium } = require("playwright");20(async () => {21 const browser = await chromium.launch();22 const context = await browser.newContext();23 const page = await context.newPage();24 const color = await page.getBackgroundColor("text=Get started");25 console.log(color);26 await browser.close();27})();28const { chromium } = require("playwright");29(async () => {30 const browser = await chromium.launch();31 const context = await browser.newContext();32 const page = await context.newPage();33 const color = await page.getBackgroundColor("text=Get started");34 console.log(color);35 await browser.close();36})();37const { chromium } = require("playwright");38(async () => {39 const browser = await chromium.launch();40 const context = await browser.newContext();41 const page = await context.newPage();42 const color = await page.getBackgroundColor("text=Get started");43 console.log(color);44 await browser.close();45})();46const { chromium } = require("playwright");47(async () => {
Using AI Code Generation
1const { getBackgroundColor } = require('playwright-core/lib/server/chromium/crPage');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const style = await getBackgroundColor(page, 'body');7 console.log(style);8 await browser.close();9})();10Output: { r: 255, g: 255, b: 255, a: 1 }
Using AI Code Generation
1const { getBackgroundColor } = require("playwright/lib/server/chromium/crPage");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 color = await getBackgroundColor(page, "#main");8 console.log(color);9 await browser.close();10})();11{ r: 255, g: 255, b: 255, a: 1 }
Using AI Code Generation
1const { chromium } = require('playwright');2const path = require('path');3const fs = require('fs');4(async () => {5 const browser = await chromium.launch();6 const context = await browser.newContext();7 const page = await context.newPage();8 const element = await page.$('h1');9 const color = await element.evaluate(element => {10 return getComputedStyle(element).backgroundColor;11 });12 console.log(color);13 await browser.close();14})();15const { chromium } = require('playwright');16const path = require('path');17const fs = require('fs');18(async () => {19 const browser = await chromium.launch();20 const context = await browser.newContext();21 const page = await context.newPage();22 const element = await page.$('h1');23 const color = await element.evaluate(element => {24 return getComputedStyle(element).backgroundColor;25 });26 console.log(color);27 await browser.close();28})();29const { chromium } = require('playwright');30const path = require('path');31const fs = require('fs');32(async () => {33 const browser = await chromium.launch();34 const context = await browser.newContext();35 const page = await context.newPage();36 const element = await page.$('h1');37 const color = await element.evaluate(element => {38 return getComputedStyle(element).backgroundColor;39 });40 console.log(color);41 await browser.close();42})();43const { chromium } = require('playwright');44const path = require('path');45const fs = require('fs');46(async () => {47 const browser = await chromium.launch();48 const context = await browser.newContext();49 const page = await context.newPage();50 const element = await page.$('h1');
Using AI Code Generation
1const {getBackgroundColor} = require('playwright/lib/server/supplements/recorder/recorderSupplement');2const {chromium} = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const element = await page.$('input[name="q"]');8 const backgroundColor = await getBackgroundColor(page, element);9 console.log(backgroundColor);10 await browser.close();11})();12Output: rgb(255, 255, 255)
Using AI Code Generation
1const { getBackgroundColor } = require('playwright-core/lib/server/chromium/crPage');2const { chromium } = require('playwright-core');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const backgroundColor = await getBackgroundColor(page, page.mainFrame(), '.navbar__inner');8 console.log(backgroundColor);9 await browser.close();10})();
Using AI Code Generation
1const { getBackgroundColor } = require('playwright/lib/server/dom.js');2const { parseColor } = require('playwright/lib/utils/color.js');3async function getBgColor(page, selector) {4 const elementHandle = await page.$(selector);5 const { r, g, b, a } = parseColor(await getBackgroundColor(elementHandle));6 return { r, g, b, a };7}8const { getComputedStyle } = require('playwright/lib/server/dom.js');9async function getBgColor(page, selector) {10 const elementHandle = await page.$(selector);11 return await getComputedStyle(elementHandle, 'background-color');12}13const { getBoundingClientRect } = require('playwright/lib/server/dom.js');14async function getRect(page, selector) {15 const elementHandle = await page.$(selector);16 const rect = await getBoundingClientRect(elementHandle);17 return { x: rect.x, y: rect.y, width: rect.width, height: rect.height };18}19const { getInnerText } = require('playwright/lib/server/dom.js');20async function getTextContent(page, selector) {21 const elementHandle = await page.$(selector);22 return await getInnerText(elementHandle);23}24const { getOuterHTML } = require('playwright/lib/server/dom.js');25async function getOuterHTML(page, selector) {26 const elementHandle = await page.$(selector);27 return await getOuterHTML(elementHandle);28}29const { getInnerText } = require('playwright/lib/server/dom.js');30async function getTextContent(page, selector) {31 const elementHandle = await page.$(selector);32 return await getInnerText(elementHandle);33}34const { getInnerText } = require('playwright/lib/server/dom.js');35async function getTextContent(page, selector) {36 const elementHandle = await page.$(selector);37 return await getInnerText(elementHandle);38}
Using AI Code Generation
1const { getBackgroundColor } = require('playwright/lib/server/page');2const { parseColor } = require('playwright/lib/utils/color');3const { readFileSync } = require('fs');4const { join } = require('path');5const html = readFileSync(join(__dirname, 'index.html'), 'utf-8');6const page = {7 async mainFrame() {8 return {9 async evaluateExpression() {10 return html;11 }12 };13 }14};15(async () => {16 const color = await getBackgroundColor(page, 'body');17 console.log('color: ', color);18 const parsedColor = parseColor(color);19 console.log('parsedColor: ', parsedColor);20})();21color: rgb(255, 255, 255)22parsedColor: { r: 255, g: 255, b: 255, a: 1 }
Using AI Code Generation
1const { getBackgroundColor } = require('playwright/chromium/lib/webkit/webkit.css.js');2const { parseColor } = require('playwright/chromium/lib/webkit/webkit.css.js');3const colorString = getBackgroundColor('white');4const color = parseColor(colorString);5console.log(color);6{ r: 255, g: 255, b: 255, a: 1 }7BrowserContext has a few methods like clearCookies(), clearPermissions(), setDefaultTimeout(), setGeolocation(), setHTTPCredentials(), setOffline(), setPermissions(), setProxy(), setStorageState(), addCookies(), addInitScript(), addInitScriptPath(), addInitScript(), addInitScriptPath(), exposeBinding(), exposeFunction(), newPage(), newCDPSession(), newBrowserCDPSession(), newBrowserContext(), cookies(), storageState(), setExtraHTTPHeaders(), extraHTTPHeaders(), close(), exposeBinding(), exposeFunction(), newPage(), newCDPSession(), newBrowserCDPSession(), newBrowserContext(), cookies(), storageState(), setExtraHTTPHeaders(), extraHTTPHeaders(), close(), exposeBinding(), exposeFunction(), newPage(), newCDPSession(), newBrowserCDPSession(), newBrowserContext(), cookies(), storageState(), setExtraHTTPHeaders(), extraHTTPHeaders(), close(), exposeBinding(), exposeFunction(), newPage(), newCDPSession(), newBrowserCDPSession(), newBrowserContext(), cookies(), storageState(), setExtraHTTPHeaders(), extraHTTPHeaders(), close(), exposeBinding(), exposeFunction(), newPage(), newCDPSession(), newBrowserCDPSession(), newBrowserContext(), cookies(), storageState(), setExtraHTTPHeaders(), extraHTTPHeaders(), close(), exposeBinding(), exposeFunction(), newPage(), newCDPSession(), newBrowserCDPSession(), newBrowserContext(), cookies(), storageState(), setExtraHTTPHeaders(), extraHTTPHeaders(), close(), exposeBinding(), exposeFunction(), newPage(), newCDPSession(), newBrowserCDPSession(), newBrowserContext(), cookies(), storageState(), setExtraHTTPHeaders(), extraHTTPHeaders(), close(), exposeBinding(), exposeFunction(), newPage(), newCDPSession(), newBrowserCDPSession(), newBrowserContext(), cookies(), storageState(), setExtraHTTPHeaders(), extra
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!!