Best JavaScript code snippet using playwright-internal
ap_h5.js
Source: ap_h5.js
...155 x = x - self.relativeLeft;156 y = y - self.relativeTop;157 var perX = x / 16 + 'rem'; //remç¸å¯¹ä½ç½®158 var perY = y / 16 + 'rem';159 self.innerstyle = self.updateStyle(self.innerstyle, "top", perY);160 self.innerstyle = self.updateStyle(self.innerstyle, "left", perX);161 }162 self.editmousemove(e);163 e.preventDefault();164 },165 editmousemove: function (e) {166 var self = this;167 e = e || arguments.callee.caller.arguments[0];168 if (self.editshow == false || self.isSelect == false) {169 return;170 }171 if (self.resizeTarget !== "") {172 var target = $(self.resizeTarget);173 //ä¸ä¸å·¦å³ å·¦ä¸ å·¦ä¸ å³ä¸ å³ä¸174 var h = $(target).parent().height();175 var w = $(target).parent().width();176 var className = target[0].style.cursor;177 var parentDom = $(target).parent();178 var top = parentDom.position().top;179 var left = parentDom.position().left;180 e.movementX = e.clientX - target[0].ox;181 e.movementY = e.clientY - target[0].oy;182 target[0].ox = e.clientX;183 target[0].oy = e.clientY;184 switch (className) {185 case "n-resize":186 self.innerstyle = self.updateStyle(self.innerstyle, "height", self.toRem(h - e.movementY));187 if (self.compareRem(self.toRem(h - e.movementY)))188 self.innerstyle = self.updateStyle(self.innerstyle, "top", self.toRem(top + e.movementY));189 self.innerstyle = self.updateStyle(self.innerstyle, "line-height", self.toRem(h - e.movementY));190 break;191 case "e-resize":192 self.innerstyle = self.updateStyle(self.innerstyle, "width", self.toRem(w + e.movementX));193 break;194 case "s-resize":195 self.innerstyle = self.updateStyle(self.innerstyle, "height", self.toRem(h + e.movementY));196 self.innerstyle = self.updateStyle(self.innerstyle, "line-height", self.toRem(h + e.movementY));197 break;198 case "w-resize":199 self.innerstyle = self.updateStyle(self.innerstyle, "width", self.toRem(w - e.movementX));200 if (self.compareRem(self.toRem(w - e.movementX)))201 self.innerstyle = self.updateStyle(self.innerstyle, "left", self.toRem(left + e.movementX));202 break;203 case "nw-resize":204 self.innerstyle = self.updateStyle(self.innerstyle, "width", self.toRem(w - e.movementX));205 self.innerstyle = self.updateStyle(self.innerstyle, "height", self.toRem(h - e.movementY));206 if (self.compareRem(self.toRem(w - e.movementX)))207 self.innerstyle = self.updateStyle(self.innerstyle, "left", self.toRem(left + e.movementX));208 if (self.compareRem(self.toRem(h - e.movementY)))209 self.innerstyle = self.updateStyle(self.innerstyle, "top", self.toRem(top + e.movementY));210 self.innerstyle = self.updateStyle(self.innerstyle, "line-height", self.toRem(h - e.movementY));211 break;212 case "ne-resize":213 self.innerstyle = self.updateStyle(self.innerstyle, "width", self.toRem(w + e.movementX));214 self.innerstyle = self.updateStyle(self.innerstyle, "height", self.toRem(h - e.movementY));215 if (self.compareRem(self.toRem(h - e.movementY)))216 self.innerstyle = self.updateStyle(self.innerstyle, "top", self.toRem(top + e.movementY));217 self.innerstyle = self.updateStyle(self.innerstyle, "line-height", self.toRem(h - e.movementY));218 break;219 case "sw-resize":220 self.innerstyle = self.updateStyle(self.innerstyle, "width", self.toRem(w - e.movementX));221 self.innerstyle = self.updateStyle(self.innerstyle, "height", self.toRem(h + e.movementY));222 if (self.compareRem(self.toRem(w - e.movementX)))223 self.innerstyle = self.updateStyle(self.innerstyle, "left", self.toRem(left + e.movementX));224 self.innerstyle = self.updateStyle(self.innerstyle, "line-height", self.toRem(h + e.movementY));225 break;226 case "se-resize":227 self.innerstyle = self.updateStyle(self.innerstyle, "width", self.toRem(w + e.movementX));228 self.innerstyle = self.updateStyle(self.innerstyle, "height", self.toRem(h + e.movementY));229 self.innerstyle = self.updateStyle(self.innerstyle, "line-height", self.toRem(h + e.movementY));230 break;231 }232 }233 },234 toRem: function (num) {235 var self = this;236 if (num <= 0)237 return self.minrem;238 else239 return (num / 16) + "rem";240 },241 updateStyle: function (style, stylename, stylevalue) {242 var self = this;243 var _style = "";
...
set-duolingo-style.user.js
Source: set-duolingo-style.user.js
...26 element !== null27 ? Object.assign(element.style, newStyle)28 : console.warn(`no element found for "${selector}"`);29 const updateDocumentBody = color =>30 updateStyle(document.body, 'document.body', {backgroundColor: color});31 const updateSkillTree = () => {32 // update the main duolingo.com33 const skillTree = document.querySelectorAll("[data-test='skill-tree']");34 const update = skillTree && skillTree.length > 0;35 if (update) {36 // console.debug('------ updateSkillTree ------');37 [...skillTree].forEach(a =>38 updateStyle(a, "[data-test='skill-tree']", {39 backgroundColor: LIGHT_COLOR,40 }),41 );42 return true;43 }44 return false;45 };46 const updateSkillTreeExercise = () => {47 // update duolingo.com exercise in the skill tree48 const skillExercise = document.querySelectorAll("[data-test*='challenge']");49 const hasExercise = () => {50 return skillExercise && skillExercise.length > 0;51 };52 if (hasExercise()) {53 // console.debug('------ updateSkillTreeExercise ------');54 [...document.querySelectorAll('div')].forEach(a =>55 updateStyle(a, 'div', {backgroundColor: DARK_COLOR, color: TEXT_COLOR}),56 );57 [...document.querySelectorAll('button')].forEach(a =>58 updateStyle(a, 'button', {color: '#000', fontSize: '20px'}),59 );60 return true;61 }62 return false;63 };64 const updateStories = () => {65 // update stories.duolingo.com66 const storyGrid = document.querySelectorAll('.story-grid');67 const storyHeader = document.querySelectorAll('.stories-header');68 const storySet = document.querySelectorAll('.story-grid .set');69 const storySetHeader = document.querySelectorAll(70 '.story-grid .set .set-header',71 );72 const storyTitle = document.querySelectorAll(73 '.story-grid .set .story .title',74 );75 const hasStories = () => {76 let result = storyGrid && storyGrid.length > 0;77 result = result && storySet && storySet.length > 0;78 result = result && storySetHeader && storySetHeader.length > 0;79 result = result && storyTitle && storyTitle.length > 0;80 return result;81 };82 if (hasStories()) {83 // console.debug('------ updateStories ------');84 [...storyGrid].forEach(a =>85 updateStyle(a, 'storyGrid', {backgroundColor: LIGHT_COLOR}),86 );87 [...storyHeader].forEach(a =>88 updateStyle(a, 'storyHeader', {89 backgroundColor: DARK_COLOR,90 color: TEXT_COLOR,91 }),92 );93 [...storySet].forEach(a =>94 updateStyle(a, 'storySet', {backgroundColor: DARK_COLOR}),95 );96 [...storySetHeader].forEach(a =>97 updateStyle(a, 'storySetHeader', {color: TEXT_COLOR}),98 );99 [...storyTitle].forEach(a =>100 updateStyle(a, 'storyTitle', {color: TEXT_COLOR}),101 );102 return true;103 }104 return false;105 };106 const updateStory = () => {107 // update a story in stories.duolingo.com108 const storyContainer = document.querySelectorAll(109 '.transcription-container',110 );111 const storyTextTitle = document.querySelectorAll('.title .synced-text');112 const storyText = document.querySelectorAll(113 '.phrase, .synced-text, .answer, .challenge-question, .story-end-section, .title.completed',114 );115 const storyTextDark = document.querySelectorAll(116 '.point-to-phrase-synced-text.highlighted, .phrase-bank>span',117 );118 if (storyContainer && storyContainer.length > 0) {119 // console.debug('------ updateStory ------');120 [...storyContainer].forEach(a =>121 updateStyle(a, 'storyContainer', {122 backgroundColor: DARK_COLOR,123 color: TEXT_COLOR,124 }),125 );126 [...storyText].forEach(a =>127 updateStyle(a, 'storyContainer', {color: TEXT_COLOR}),128 );129 [...storyTextDark].forEach(a =>130 updateStyle(a, 'storyContainer', {color: TEXT_COLOR_DARK}),131 );132 [...storyTextTitle].forEach(a =>133 updateStyle(a, 'storyContainer', {color: TEXT_COLOR}),134 );135 return true;136 }137 return false;138 };139 const updateSubmitABugReport = () => {140 const main = document.querySelectorAll('main[role="main"]');141 if (main && main.length > 0) {142 // console.debug('------ updateSubmitABugReport ------');143 [...main].forEach(a =>144 updateStyle(a, 'main', {145 backgroundColor: DARK_COLOR,146 color: TEXT_COLOR,147 }),148 );149 const text = document.querySelectorAll('h1,p');150 [...text].forEach(a => updateStyle(a, 'text', {color: TEXT_COLOR}));151 return true;152 }153 return false;154 };155 const updateWordsTable = () => {156 // https://www.duolingo.com/words157 const words = document.querySelectorAll('._3zjVe');158 if (words && words.length > 0) {159 [...words].forEach(a =>160 updateStyle(a, 'words table', {backgroundColor: DARK_COLOR}),161 );162 const title = document.querySelectorAll('._3zjVe h1');163 [...title].forEach(a =>164 updateStyle(a, 'words title', {color: TEXT_COLOR}),165 );166 const cell = document.querySelectorAll('tr.VjtrX>td');167 [...cell].forEach(a => updateStyle(a, 'words cell', {color: TEXT_COLOR}));168 const info = document.querySelectorAll('.NYMhm h2, ._3Io2c');169 [...info].forEach(a => updateStyle(a, 'words info', {color: TEXT_COLOR}));170 return true;171 }172 return false;173 };174 const updateElementsLightColor = () => {175 const x1 = '.Af4up';176 const links = document.querySelectorAll(`a:not(${x1})`);177 [...links].forEach(a =>178 updateStyle(a, 'links', {textDecoration: 'underline'}),179 );180 const forum = '._1RSpr'; // subscriptions181 const forumRelatedDiscussions = '._1y1Vb';182 const userInNotificationsPopup = '[rel="nofollow"]';183 const titleInNotificationsPopup = '.Rl0dL';184 const el = `h1:not(${titleInNotificationsPopup}), h2:not(${forum}), h3, h4, h5, h6, td, p`;185 const elA = `a:not([data-test="lingot-store-button"]):not(${forumRelatedDiscussions}):not(${userInNotificationsPopup}):not(._3sWvR)`;186 const elUl = 'ul:not(._1ZY-H):not(._1XE6M)>li:not(._1Eh9P):not(._1CkMd)';187 const elOl = 'ol>li';188 const text = document.querySelectorAll(`${el},${elA},${elUl},${elOl}`);189 [...text].forEach(a => updateStyle(a, 'text', {color: TEXT_COLOR}));190 };191 const updateElementsDarkColor = () => {192 const darkText = document.querySelectorAll('code');193 [...darkText].forEach(a =>194 updateStyle(a, 'darkText', {color: TEXT_COLOR_DARK}),195 );196 };197 // eslint-disable-next-line no-unused-vars198 const observer = new MutationObserver((mutations, mutationObserver) => {199 // I really don't like using these automagically generated class names :-/200 // https://www.youtube.com/watch?v=Hn2zzi_lquA201 // JavaScript Mutation Observer202 // Kyle Robinson Young203 // https://github.com/shama/letswritecode/tree/master/javascript-mutation-observer204 mutations.forEach(function (mutation) {205 var i;206 if (mutation.addedNodes.length) {207 for(i=0; i<mutation.addedNodes.length; i++){208 console.debug('Added', mutation.addedNodes[i])209 }210 }211 if (mutation.removedNodes.length) {212 for(i=0; i<mutation.removedNodes.length; i++){213 console.debug('Removed', mutation.removedNodes[i])214 }215 }216 })217 /* Using a single background color */218 updateDocumentBody(DARK_COLOR);219 console.debug(Date());220 console.debug("Hello World");221 console.debug(window.location.href);222 console.debug(mutations);223 console.debug(mutationObserver);224 const tips = document.querySelectorAll('._1TgLl._1E3L7');225 [...tips].forEach(a =>226 updateStyle(a, 'tips', {backgroundColor: DARK_COLOR}),227 );228 const store = document.querySelectorAll('._2hEQd._1E3L7');229 [...store].forEach(a =>230 updateStyle(a, 'store', {backgroundColor: DARK_COLOR}),231 );232 if (updateSkillTreeExercise()) return;233 if (updateSkillTree()) return;234 if (updateStory()) return;235 if (updateStories()) return;236 if (updateSubmitABugReport()) return;237 if (updateWordsTable()) return;238 // console.debug('------updating all------');239 updateElementsLightColor();240 updateElementsDarkColor();241 });242 observer.observe(document, {243 childList: true,244 subtree: true,...
demo.js
Source: demo.js
...42 },43 events: {44 load: function () {45 const chart = this;46 updateStyle('highcharts-title', 'opacity', 0, '0s');47 updateStyle('candlestick', 'opacity', 0, '0s');48 updateStyle('highcharts-yaxis-labels', 'opacity', 0, '0s');49 chart.update({50 navigator: {51 enabled: true52 }53 });54 updateStyle('candlestick', 'transform', 'rotate(0deg)', '0s');55 if (big) {56 chart.rangeSelector.clickButton(3);57 } else {58 chart.rangeSelector.clickButton(1);59 }60 const p1 = function () {61 chart.xAxis[0].update({ visible: true });62 updateStyle('highcharts-axis-labels', 'opacity', 1, '800ms');63 updateStyle('candlestick', 'opacity', 0, '0s');64 updateStyle('candlestick', 'opacity', 1, '1s');65 updateStyle('highcharts-point-up', 'fillOpacity', 1, '1s');66 updateStyle('highcharts-point-down', 'fillOpacity', 1, '1s');67 updateStyle('highcharts-range-selector-buttons', 'opacity', 1, '1s');68 if (!reduced) {69 updateStyle('candlestick', 'transform', 'rotate(0deg)', '1s');70 }71 };72 setTimeout(p1, 700);73 }74 }75 },76 title: {77 text: '',78 y: 11079 },80 exporting: {81 enabled: false82 },83 credits: {84 enabled: false85 },86 navigator: {87 enabled: false,88 series: {89 accessibility: {90 enabled: false91 }92 }93 },94 lang: {95 accessibility: {96 chartContainerLabel: '',97 screenReaderSection: {98 beforeRegionLabel: '',99 endOfChartMarker: ''100 }101 }102 },103 accessibility: {104 landmarkVerbosity: 'disabled',105 screenReaderSection: {106 beforeChartFormat: '<h2>Stock chart demo</h2><p>Interactive candlestick chart displaying stock prices for Apple (AAPL) over time.</p>'107 },108 series: {109 descriptionFormatter: function (series) {110 return series.name + ', ' + series.points.length + ' data points.';111 }112 },113 point: {114 dateFormat: '%A, %B %e %Y',115 valueDescriptionFormat: '{xDescription}{separator}{value}.'116 }117 },118 scrollbar: {119 enabled: false120 },121 rangeSelector: {122 enabled: true,123 inputEnabled: false,124 selected: 0,125 buttons: [{126 type: 'week',127 count: 1,128 text: '1w',129 title: 'View 1 week'130 },131 {132 type: 'week',133 count: 4,134 text: '1m',135 title: 'View 1 month'136 }, {137 type: 'month',138 count: 2,139 text: '2m',140 title: 'View 2 months'141 },142 {143 type: 'month',144 count: 3,145 text: '3m',146 title: 'View 3 months'147 },148 {149 type: 'month',150 count: 4,151 text: '4m',152 title: 'View 4 months'153 }],154 floating: true,155 verticalAlign: 'middle',156 y: -130,157 buttonPosition: {158 align: 'center'159 }160 },161 xAxis: [{162 visible: false,163 offset: -30,164 events: {165 afterSetExtremes: function () {166 // document.querySelector('.highcharts-candlestick-series.candlestick').classList.add('h');167 updateStyle('highcharts-point-up', 'fillOpacity', 1, '1s');168 updateStyle('highcharts-point-down', 'fillOpacity', 1, '1s');169 }170 }171 }],172 yAxis: [{173 visible: false174 }],175 series: [{176 name: 'AAPL',177 animation: {178 enabled: true179 },180 type: 'candlestick',181 className: 'candlestick',182 dataGrouping: {...
gradient.js
Source: gradient.js
1// Color range2let colorRange = document.querySelector("#color-range");3let colorsAll = document.querySelectorAll(".color");4let colorLeft = document.querySelector("#color-left");5let colorMiddle = document.querySelector("#color-middle");6let colorRight = document.querySelector("#color-right");7let checkboxMiddle = document.querySelector("#middle-check");8let middleTransitionLabel = document.querySelector("#label-transition");9let middleTransition = document.querySelector("#middle-transition");10// Color picker events11for (let i = 0; i < colorsAll.length; i++) {12 colorsAll[i].addEventListener("change", function() {13 updateColorRange();14 updateGradientPreview();15 updateCodeBlock();16 });17}18// Checkbox event19checkboxMiddle.addEventListener("click", function() {20 updateColorRange();21 updateGradientPreview();22 updateCodeBlock();23});24// Transition change event25middleTransition.addEventListener("change", function() {26 updateColorRange();27 updateGradientPreview();28 updateCodeBlock();29});30// Update color-range function31function updateColorRange() {32 let updateStyle = "linear-gradient(to right, "33 if (checkboxMiddle.checked) {34 35 // Show hidden elements36 colorMiddle.hidden = false;37 middleTransition.hidden = false;38 39 // Update text of transition label40 middleTransitionLabel.textContent = "Middle transition = " + middleTransition.value;41 42 // Prepare string43 updateStyle += colorLeft.value + " 0%, ";44 updateStyle += colorMiddle.value + " " + middleTransition.value +"%, ";45 updateStyle += colorRight.value + " 100%)";46 47 // Update style using prepared string48 colorRange.style.backgroundImage = updateStyle;49 } else {50 // Hide elements51 colorMiddle.hidden = true;52 middleTransition.hidden = true;53 // Update text of transition label54 middleTransitionLabel.textContent = "Middle transition = false";55 56 // Prepare string57 updateStyle += colorLeft.value + " 0%, ";58 updateStyle += colorRight.value + " 100%)";59 // Update style using prepared string60 colorRange.style.backgroundImage = updateStyle;61 }62}63// Gradient preview box64let gradientPreview = document.querySelector("#gradient-box");65let testString = "linear-gradient(rgb(206, 89, 55) 0%, rgb(28, 110, 164) 16%, rgb(197, 146, 55) 100%)"66let testString2 = "radial-gradient(at center center, rgb(206, 89, 55) 0%, rgb(28, 110, 164) 16%, rgb(197, 146, 55) 100%)"67let testString3 = "linear-gradient(135deg, rgb(206, 89, 55) 0%, rgb(28, 110, 164) 16%, rgb(197, 146, 55) 100%)"68let testString4 = "linear-gradient(45deg, rgb(206, 89, 55) 0%, rgb(28, 110, 164) 16%, rgb(197, 146, 55) 100%)"69let re = /\w+-\w+\(([^rgb](\w+\s?,?)+)?/;70// Gradient styles to choose from71let leftToRight = document.querySelector("#left-to-right");72let topToBottom = document.querySelector("#top-to-bottom");73let diagonalDescending = document.querySelector("#diagonal-descending");74let diagonalAscending = document.querySelector("#diagonal-ascending");75let radial = document.querySelector("#radial");76let allStyleBoxes = document.querySelectorAll(".gradient-style-box");77// Add event handlers to eachbox which represents style78for (let i = 0; i < allStyleBoxes.length; i++){79 allStyleBoxes[i].addEventListener("click", function(){80 // Make sure to remove class81 for (let j = 0; j < allStyleBoxes.length; j++){82 allStyleBoxes[j].classList.remove("gradient-style-select");83 }84 // Add it to element that is selected85 this.classList.add("gradient-style-select");86 87 // Change gradient box style and don't change gradient range elemnt88 gradientPreview.style.backgroundImage = window.getComputedStyle(this).backgroundImage;89 updateGradientPreview();90 updateCodeBlock();91 });92}93// Update gradient preview function94function updateGradientPreview() {95 let updateStyle = window.getComputedStyle(gradientPreview).backgroundImage.match(re)[0]96 if (checkboxMiddle.checked) {97 updateStyle += colorLeft.value + " 0%, ";98 updateStyle += colorMiddle.value + " " + middleTransition.value + "%, ";99 updateStyle += colorRight.value + " 100%)";100 gradientPreview.style.backgroundImage = updateStyle;101 } else {102 updateStyle += colorLeft.value + " 0%, ";103 updateStyle += colorRight.value + " 100%)";104 gradientPreview.style.backgroundImage = updateStyle;105 }106}107// Update code function108let codeBlock = document.querySelector("#code-block");109function updateCodeBlock() {110 let currentGradientStyle = getComputedStyle(gradientPreview).backgroundImage;111 codeBlock.textContent = currentGradientStyle;...
GetStyle.js
Source: GetStyle.js
...58 };59 if (big) {60 }61 if (animationName.toLowerCase().includes("slideleft")) {62 updateStyle(afterStyle, "transform", "translateX(0em)");63 updateStyle(64 afterStyle,65 "transition",66 "transform 2s 0.25s cubic-bezier(0, 1, 0.3, 1)"67 );68 updateStyle(beforeStyle, "transform", `translateX(-${travelDist})`);69 }7071 if (animationName.toLowerCase().includes("slideright")) {72 updateStyle(afterStyle, "transform", "translateX(0em)");73 updateStyle(74 afterStyle,75 "transition",76 "transform 2s 0.25s cubic-bezier(0, 1, 0.3, 1)"77 );78 updateStyle(beforeStyle, "transform", `translateX(${travelDist})`);79 }8081 if (animationName.toLowerCase().includes("slideup")) {82 updateStyle(afterStyle, "transform", "translateY(0em)");83 updateStyle(84 afterStyle,85 "transition",86 "transform 2s 0.25s cubic-bezier(0, 1, 0.3, 1)"87 );88 updateStyle(beforeStyle, "transform", `translateY(-${travelDist})`);89 }9091 if (animationName.toLowerCase().includes("slidedown")) {92 updateStyle(afterStyle, "transform", "translateY(0em)");93 updateStyle(94 afterStyle,95 "transition",96 "transform 2s 0.25s cubic-bezier(0, 1, 0.3, 1)"97 );98 updateStyle(beforeStyle, "transform", `translateY(${travelDist})`);99 }100101 if (animationName.toLowerCase().includes("fadein")) {102 /* BEFORE STYLE */103 updateStyle(beforeStyle, "opacity", "0");104 /* AFTER STYLE */105 updateStyle(afterStyle, "opacity", "1");106 updateStyle(afterStyle, "transition", "opacity 0.4s 0.25s ease-out");107 }108109 if (animationName.toLowerCase().includes("rotate")) {110 /* BEFORE STYLE */111 updateStyle(beforeStyle, "transform", "rotateZ(-5deg)");112 /* AFTER STYLE */113 updateStyle(afterStyle, "transform", "rotateZ(0deg)");114 updateStyle(afterStyle, "transition", "transform 0.4s 0.25s ease-out");115 }116117 return getStyle(inViewport, enterCount, staticStyle, afterStyle, beforeStyle);118};119
...
resize.js
Source: resize.js
...11 , userInputSpacing = 8012 , userImputContainer = 8013 , userSettingsPanel = 551415 updateStyle('#messages-container', 'height', (screenH - userImputContainer - channelHeader))16 updateStyle('#messages-container', 'width', (screenW - channelsListWidth - serversListWidth))17 updateStyle('#messages-container.channels', 'width', (screenW - channelsListWidth - serversListWidth - channelUsersList))18 19 updateStyle('#contact_message', 'width', (screenW - channelsListWidth - serversListWidth - userInputSpacing))20 updateStyle('#channel-users', 'height', (screenH - channelHeader))21 22 updateStyle('#channels-list', 'height', (screenH - channelHeader - channelsListHeader - userSettingsPanel))23 updateStyle('#contacts-list', 'height', (screenH - channelHeader - userSettingsPanel))2425 updateStyle('#server-list-container', 'height', screenH)26 updateStyle('#server-channels-container', 'height', screenH)27 updateStyle('#channel-messages-container', 'height', screenH)28 updateStyle('#channel-messages-container', 'width', screenW - channelsListWidth - serversListWidth)29 30 // hide user list31 if(screenW < 1000) {32 updateStyle('#channel-users', 'display', 'none')3334 updateStyle('#channel-messages', 'width', (screenW - channelsListWidth - serversListWidth))35 updateStyle('#user-input', 'width', (screenW - channelsListWidth - serversListWidth))36 updateStyle('#channel_message', 'width', (screenW - channelsListWidth - serversListWidth - userInputSpacing))37 updateStyle('#messages-container.channels', 'width', '100%')38 } else {39 updateStyle('#channel-users', 'display', 'block')4041 updateStyle('#channel-messages', 'width', (screenW - channelsListWidth - serversListWidth - channelUsersList))42 updateStyle('#user-input', 'width', (screenW - channelsListWidth - serversListWidth - channelUsersList))43 updateStyle('#user-input.contacts', 'width', (screenW - channelsListWidth - serversListWidth))44 updateStyle('#channel_message', 'width', (screenW - channelsListWidth - serversListWidth - channelUsersList - userInputSpacing))45 }46}4748function updateStyle(selector, styleAttribute, value) {49 var element = document.querySelector(selector)50 if(typeof(element) != 'undefined' && element != null)51 element.style[styleAttribute] = value + ((typeof value == 'number')? 'px' : '')52}5354// resize elements on resize event55window.onresize = function(event) {56 resizeElements()
...
modalFunctions.js
Source: modalFunctions.js
...25 const modalCloseBtn = document.querySelector('.modal__header__close')26 // Open the modal in selected state27 fundingBtns.forEach((btn) => {28 btn.addEventListener('click', () => {29 updateStyle(modalFunding, 'open', 'add')30 updateStyle(body, 'modal-opened', 'add')31 const modalItemRadio = radioInputs.find(32 (input) => input.id === btn.dataset.pledge33 )34 modalItemRadio.checked = true35 const itemToSelect = modalItemRadio.parentNode.parentNode.parentNode36 updateStyle(itemToSelect, 'selected', 'add')37 })38 })39 // Open the modal in default state40 backProjectBtn.addEventListener('click', () => {41 updateStyle(modalFunding, 'open', 'add')42 updateStyle(body, 'modal-opened', 'add')43 })44 // Close the modal when the close button was clicked45 modalCloseBtn.addEventListener('click', () => {46 updateStyle(modalFunding, 'open', 'remove')47 updateStyle(body, 'modal-opened', 'remove')48 radioInputs.forEach((input) => (input.checked = false))49 fundingItems.forEach((item) => updateStyle(item, 'selected', 'remove'))50 })51 // Close the modal when the user clicks outside of the modal52 modalFunding.addEventListener('click', (e) => {53 if (e.target.classList.contains('modal-container')) {54 updateStyle(modalFunding, 'open', 'remove')55 updateStyle(body, 'modal-opened', 'remove')56 radioInputs.forEach((input) => (input.checked = false))57 fundingItems.forEach((item) => updateStyle(item, 'selected', 'remove'))58 }59 })60}61/**62 * Function for closing the completed modal (#modal-funding-completed)63 *64 * @function65 */66export const closeModalFundingCompleted = () => {67 const completedModalBtn = document.querySelector(68 '#modal-funding-completed .btn'69 )70 completedModalBtn.addEventListener('click', () => {71 updateStyle(modalFundingCompleted, 'open', 'remove')72 updateStyle(body, 'modal-opened', 'remove')73 radioInputs.forEach((input) => (input.checked = false))74 fundingItems.forEach((item) => updateStyle(item, 'selected', 'remove'))75 })...
CKEditorUtil.js
Source: CKEditorUtil.js
...8 var count = 1;9 eContentCSS.onblur = updateStyle;10 updateStyle;11 12 function updateStyle() {13 var sValue = eContentCSS.value; 14 if(!sValue) return;15 var iDoc = CKEDITOR.instances[Instance].document.$;16 var eHead = iDoc.getElementsByTagName("head")[0];17 var eStyle = iDoc.getElementById(sContentCSSId);18 if (eStyle) {19 eHead.removeChild(eStyle);20 }21 eStyle = iDoc.createElement("style");22 eStyle.setAttribute("type", "text/css");23 eStyle.setAttribute("id", sContentCSSId); 24 if (eXo.core.Browser.isIE6() || eXo.core.Browser.isIE7()) { //for IE6 and IE7 25 eStyle.styleSheet.cssText = sValue; 26 } else {27 eStyle.innerHTML = sValue;28 }29 eHead.appendChild(eStyle);30 };31 32 (function checkCKEditorAPI() {33 if (count <= 5) {34 try {35 updateStyle();36 if (updateStyle.time) {37 clearTimeout(updateStyle.time);38 updateStyle.time = null;39 }40 } catch(e) {41 count++;42 updateStyle.time = setTimeout(checkCKEditorAPI, 500);43 }44 }45 })();46 47};4849eXo.ecm.CKEditor = new CKEditor();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.updateStyle('body', {7 });8 await page.screenshot({ path: 'google-red.png' });9 await browser.close();10})();11[MIT](LICENSE)
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.evaluate(() => {6 const style = document.createElement('style');7 style.innerHTML = 'body {background-color: red}';8 document.head.appendChild(style);9 });10 await page.screenshot({path: 'screenshot.png'});11 await browser.close();12})();
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.evaluate(() => {6 window.playwright.updateStyle('body', 'background-color', 'red');7 });
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.updateStyle('css=body', 'background', 'red');6 await page.screenshot({ path: `example.png` });7 await browser.close();8})();9#### page.updateStyle(selector, name, value)10await page.updateStyle('css=body', 'background', 'red');11- [playwright-core](
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.evaluate(() => {6 const style = document.createElement('style');7 style.innerHTML = 'body { background-color: red; }';8 document.head.appendChild(style);9 });10 await page.screenshot({ path: 'example.png' });11 await browser.close();12})();
Using AI Code Generation
1const { updateStyle } = require('playwright/lib/server/chromium/crPage');2const { chromium } = require('playwright');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.$('div');9 const id = await element.getAttribute('id');10 const ownerDocument = await element.getProperty('ownerDocument');11 const defaultView = await ownerDocument.getProperty('defaultView');12 const document = await defaultView.getProperty('document');13 const styleSheets = await document.getProperty('styleSheets');14 const styleSheetsLength = await styleSheets.getProperty('length');15 const styleSheetsLengthValue = await styleSheetsLength.jsonValue();16 for (let i = 0; i < styleSheetsLengthValue; i++) {17 const styleSheet = await styleSheets.getProperty(`${i}`);18 const cssRules = await styleSheet.getProperty('cssRules');19 const cssRulesLength = await cssRules.getProperty('length');20 const cssRulesLengthValue = await cssRulesLength.jsonValue();21 for (let j = 0; j < cssRulesLengthValue; j
Using AI Code Generation
1const { updateStyles } = require('playwright/lib/webkit/webkit.js');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 await page.evaluate(updateStyles, 'body { background-color: red; }');8 await page.screenshot({ path: 'google-red.png' });9 await browser.close();10})();
Using AI Code Generation
1const styleSheet = await page.evaluateHandle(() => document.styleSheets[0]);2await styleSheet.evaluateHandle(sheet => sheet.insertRule('body { background-color: green; }'));3const styleSheet = await page.evaluateHandle(() => document.styleSheets[0]);4await styleSheet.evaluateHandle(sheet => sheet.insertRule('body { background-color: green; }'));5 \(browserContext\)](#browsercontext-browsercontext)6 - [Parameters](#parameters)7 - [Examples](#examples)8 - [updateStyle](#updatestyle)9 - [Parameters](#parameters-1)10 - [Examples](#examples-1)11 - [updateStyle](#updatestyle-1)12 - [Parameters](#parameters-2)13 - [Examples](#examples-2)14 \(page\)](#page-page)15 - [Parameters](#parameters-3)16 - [Examples](#examples-3)17 - [updateStyle](#updatestyle-2)18 - [Parameters](#parameters-4)19 - [Examples](#examples-4)20 - [updateStyle](#updatestyle-3)21 - [Parameters](#parameters-5)22 - [Examples](#examples-5)23 \(frame\)](#frame-frame)24 - [Parameters](#parameters-6)25 - [Examples](#examples-6)26 - [updateStyle](#updatestyle-4)27 - [Parameters](#parameters-7)28 - [Examples](#examples-7)29 - [updateStyle](#updatestyle-5)30 - [Parameters](#parameters-8)31 - [Examples](#examples-8)32## BrowserContext (browserContext)
Is it possible to get the selector from a locator object in playwright?
firefox browser does not start in playwright
firefox browser does not start in playwright
How to run a list of test suites in a single file concurrently in jest?
Running Playwright in Azure Function
Jest + Playwright - Test callbacks of event-based DOM library
Well this is one way, but not sure if it will work for all possible locators!.
// Get a selector from a playwright locator
import { Locator } from "@playwright/test";
export function extractSelector(locator: Locator) {
const selector = locator.toString();
const parts = selector.split("@");
if (parts.length !== 2) { throw Error("extractSelector: susupect that this is not a locator"); }
if (parts[0] !== "Locator") { throw Error("extractSelector: did not find locator"); }
return parts[1];
}
Check out the latest blogs from LambdaTest on this topic:
Selenium, a project hosted by the Apache Software Foundation, is an umbrella open-source project comprising a variety of tools and libraries for test automation. Selenium automation framework enables QA engineers to perform automated web application testing using popular programming languages like Python, Java, JavaScript, C#, Ruby, and PHP.
Unit and functional testing are the prime ways of verifying the JavaScript code quality. However, a host of tools are available that can also check code before or during its execution in order to test its quality and adherence to coding standards. With each tool having its unique features and advantages contributing to its testing capabilities, you can use the tool that best suits your need for performing JavaScript testing.
Traditional software testers must step up if they want to remain relevant in the Agile environment. Agile will most probably continue to be the leading form of the software development process in the coming years.
Even though several frameworks are available in the market for automation testing, Selenium is one of the most renowned open-source frameworks used by experts due to its numerous features and benefits.
When I started writing tests with Cypress, I was always going to use the user interface to interact and change the application’s state when running tests.
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!!