Best JavaScript code snippet using playwright-internal
jmcs_sis_pageutility.js
Source:jmcs_sis_pageutility.js  
...428        }429    },430    /// <summary>loads a function RunOnChange(fieldName) to execute for all field on the form - assumes the RunOnChange method will exist</summary>431    this.LoadOnChanges = function (runOnChange) {432        Xrm.Page.data.entity.attributes.forEach(function (attribute, index) { attribute.addOnChange(function () { runOnChange(attribute.getName()); }); });433    },434    /********************************435    Misc. General Functions436    ********************************/437    /// <summary>returns if two guid strings are logically the same (strips parentheses and case before comparison)</summary>438    this.GuidsEqual = function (guid1, guid2) {439        var result;440        if (guid1 == null && guid2 == null)441            result = true;442        else if (guid1 == null && guid2 != null)443            result = false;444        else if (guid1 != null && guid2 == null)445            result = false;446        else {...Rings.js
Source:Rings.js  
...77      {78        describe: e.target.value,79      },80      () => {81        this.runOnChange();82      }83    );84  };85  setJumpType = (e) => {86    this.setState(87      {88        jumpType: e.target.checked == true ? 1 : 0,89      },90      () => {91        this.runOnChange();92      }93    );94  };95  setJumpUrlTitle = (e) => {96    this.setState(97      {98        jumpUrlTitle: e.target.value,99      },100      () => {101        this.runOnChange();102      }103    );104  };105  setJumpUrl = (e) => {106    let value = e.target.value;107    this.setState(108      {109        jumpUrl: value,110      },111      () => {112        this.runOnChange();113      }114    );115  };116  formatJumpUrl = (e) => {117    let value = formatUrl(e.target.value);118    this.setState(119      {120        jumpUrl: value,121      },122      () => {123        this.runOnChange();124      }125    );126  };127  uploadModalShow = () => {128    this.setState({129      visible: true,130      uuid: uuidv4(),131    });132  };133  modalOk = () => {134    this.setState(135      {136        visible: false,137        uploadErr: [],138      },139      () => {140        this.runOnChange();141      }142    );143  };144  modalHide = () => {145    this.setState({146      visible: false,147      uploadErr: [],148    });149  };150  getFileLength = (e) => {151    this.setState({152      imgNumber: e.length,153      imgType: "",154      imgUrl: "",155      fileData: "",156    });157  };158  getFileList = (e) => {159    this.setState(160      {161        fileData: [],162      },163      () => {164        var fileData = [];165        e.fileList.map((item) => {166          let index = item.name.indexOf(".");167          fileData.push({168            uid: item.uid,169            name: item.name.substring(0, index),170            percent: item.percent,171            img: item.response ? item.response.data[0].path : "",172          });173        });174        this.setState({175          fileData: fileData,176        });177      }178    );179  };180  splicingUrl = (percent, img) => {181    if (percent == 100 && img) {182      return mediaImgConfig(img, "img");183    }184  };185  uploadSuccess = (e) => {186    let path = e.response.data[0];187    let lastIndex = path.path.lastIndexOf("/");188    let imgUrl = path.path.substring(0, lastIndex + 1);189    let imgTitle = path.path.substring(lastIndex + 1, lastIndex + 3);190    if (imgTitle == "1.") {191      if (imgUrl != this.state.imgUrl) {192        this.setState({193          imgUrl: imgUrl,194          imgType: path.ext,195        });196      }197    }198  };199  delimg = () => {200    this.setState(201      {202        imgType: "",203        imgNumber: 0,204        imgUrl: "",205      },206      () => {207        this.runOnChange();208      }209    );210  };211  runOnChange = () => {212    const {213      imgType,214      imgNumber,215      imgUrl,216      describe,217      jumpUrlTitle,218      jumpUrl,219      jumpType,220      uuid,221    } = this.state;...Model.js
Source:Model.js  
...77    this.setState({78      model_id:arr[0].id,79      model_thumb:arr[0].thumb.path80    },()=>{81      this.runOnChange();82      this.getModel3dInfo(arr[0].id);83    })84    this.closeMediaModal();85  }86  //å
³éç´ æéæ©87  closeMediaModal = () => {88    this.setState({89      userMediaVisible:false90    })91  }92  delimg = () => {93    this.setState({94      model_id:'',95      model_thumb:''96    },()=>{97      this.runOnChange();98    })99  }100  editTitle = (e) => {101    this.setState({102      title: e.target.value103    },()=>{104      this.runOnChange()105    })106  }107  editDesc = (e) => {108    this.setState({109      describe: e.target.value110    },()=>{111      this.runOnChange()112    })113  }114  setJumpType = (e) => {115    this.setState({116      jumpType: e.target.checked == true ? 1 : 0117    },()=>{118      this.runOnChange()119    })120  }121  setJumpUrlTitle = (e) => {122    this.setState({123      jumpUrlTitle: e.target.value124    },()=>{125      this.runOnChange()126    })127  }128  setJumpUrl = (e) => {129    let value = e.target.value;130    this.setState({131      jumpUrl:value132    },()=>{133      this.runOnChange()134    })135  }136  formatJumpUrl = (e) => {137    let value = formatUrl(e.target.value);138    this.setState({139      jumpUrl:value140    },()=>{141      this.runOnChange()142    })143  }144  runOnChange = () => {145    const {title,describe,jumpUrlTitle,jumpUrl,jumpType,model_id,model_thumb} = this.state;146    let data = {147      title:title,148      describe:describe,149      jumpUrlTitle:jumpUrlTitle,150      jumpUrl:jumpUrl,151      jumpType:jumpType,152      model_id:model_id,153      model_thumb:model_thumb154    }155    this.props.onChange(data);...richText.js
Source:richText.js  
...60    this.setState({61      htmlContent: data62    },()=>{63      this.closeMediaModal();64      this.runOnChange()65    });66  }67  setJumpType = (e) => {68    this.setState({69      jumpType: e.target.checked == true ? 1 : 070    },()=>{71      this.runOnChange()72    })73  }74  setJumpUrlTitle = (e) => {75    this.setState({76      jumpUrlTitle: e.target.value77    },()=>{78      this.runOnChange()79    })80  }81  setJumpUrl = (e) => {82    let value = e.target.value;83    this.setState({84      jumpUrl:value85    },()=>{86      this.runOnChange()87    })88  }89  formatJumpUrl = (e) => {90    let value = formatUrl(e.target.value);91    this.setState({92      jumpUrl:value93    },()=>{94      this.runOnChange()95    })96  }97  runOnChange = () => {98    const {title,describe,jumpUrlTitle,jumpUrl,jumpType,htmlContent,richTextId,uuid} = this.state;99    let data = {100      title:title,101      describe:describe,102      jumpUrlTitle:jumpUrlTitle,103      jumpUrl:jumpUrl,104      jumpType:jumpType,105      htmlContent:htmlContent,106      richTextId:richTextId,107      uuid:uuid108    }...app.js
Source:app.js  
1define([2	"widgetjs",3	"./editorWidget",4	"./outputWidget"5], function(widgetjs, editorWidget, outputWidget) {6	var counterCode = "function counterWidget(spec, my) {\n\tspec = spec || {};\n\tmy = my || {};\n\n\tvar that = widgetjs.widget(spec, my);\n\n\tvar count = 0;\n\n\tthat.renderContentOn = function(html) {\n\t\thtml.h1(count.toString());\n\t\thtml.button(\"+\").click(function() { count++; that.update();});\n\t\thtml.button(\"-\").click(function() { count--; that.update();});\n\t};\n\n\treturn that;\n};\n\nreturn counterWidget();";7	/**8	 * JSFiddle like playground for trying out WIDGET-JS9	 *10	 * @return {playgroundApp}11	 */12	function playgroundApp(spec, my) {13		spec = spec || {};14		my = my || {};15		var that = widgetjs.widget(spec, my);16		var runOnChange = true;17		my.code = outputWidget();18		my.editor = editorWidget({code: counterCode});19		my.editor.onChange(function() {20			if(runOnChange) {21				my.run();22			}23		});24		my.code.evaluateCode(my.editor.getCode());25		//26		// Render27		//28		that.renderContentOn = function(html) {29			my.renderNavOn(html);30			my.renderEditorOn(html);31		};32		my.renderNavOn = function(html) {33			html.div({klass: "navbar navbar-inverse navbar-static-top"},34				html.div({klass: "container-fluid"},35					html.div({klass: "navbar-header"},36						html.a({klass: "navbar-brand", href: "#"}, "Playground")37					),38					html.form({klass: "navbar-form navbar-right"},39						my.renderOptionsOn40					)41				)42			);43		};44		my.renderOptionsOn = function(html) {45			html.div({klass: "btn checkbox navbar-btn"},46				html.label({klass: "navbar-link", for: "run-on-change"},47					// Toggle run on change48					html.input({49						id: "run-on-change",50						type: "checkbox",51						checked: runOnChange ? "checked" : html.omit(),52						click: function() { runOnChange = !runOnChange; }53					}),54					" run code on change "55				)56			);57			// Run manually58			html.a({klass: "btn btn-success", click: my.run}, "Run");59		};60		my.renderEditorOn = function(html) {61			html.div({klass: "container-fluid"},62				html.div({klass: "row"},63					html.div({klass: "col-md-6"},64						// Editor65						html.div({klass: "editor code_panel"},66							html.div(my.editor),67							html.span({klass: "panel_label"}, "Code")68						)69					),70					html.div({class: "col-md-6"},71						// Output72						html.div({klass: "output code_panel"},73							html.div(my.code),74							html.span({ klass: "panel_label"}, "Output")75						)76					)77				)78			);79		};80		//81		// Protected82		//83		my.run = function() {84			my.code.evaluateCode(my.editor.getCode());85		};86		return that;87	}88	return playgroundApp;...changeset-run-on-change.js
Source:changeset-run-on-change.js  
1import * as generic from '../templates/generic-changeset';2import { checkExecutedCount, execTypeMatchAll, getChangesetId, matchByTemplate } from '../MigrationsTestUtils';3import * as MC from '../../../../app/utils/constants/MigrationsConstants';4import DBMigrationsManager from '../../../../app/modules/database/migrations/DBMigrationsManager';5import FileManager from '../../../../app/modules/util/FileManager';6import Changeset from '../../../../app/modules/database/migrations/Changeset';7const fileName = FileManager.basename(__filename);8const changelog = {9  changesets: [10    {11      ...generic.changeset('AMPOFFLINE-1307'),12      runOnChange: true,13    },14    {15      ...generic.changesetUpdate('AMPOFFLINE-1307'),16      runOnChange: true,17    },18    generic.changeset('AMPOFFLINE-1307'),19  ]20};21export default ({ changelog });22const c1 = changelog.changesets[0];23const c2 = changelog.changesets[1];24const c3 = changelog.changesets[2];25const t1And2 = {26  [MC.EXECTYPE]: MC.EXECTYPE_RERUN,27  [MC.MD5SUM]: (cObj: Changeset) => (newMd5) => cObj.md5 !== cObj.prevDBData[MC.MD5SUM] && cObj.md5 === newMd5,28  [MC.DEPLOYMENT_ID]: (cObj: Changeset) => (newDId) => cObj.prevDBData[MC.DEPLOYMENT_ID] + 1 === newDId29};30const t3 = {31  [MC.EXECTYPE]: MC.EXECTYPE_EXECUTED,32  [MC.MD5SUM]: (cObj: Changeset) => (newMd5) => cObj.md5 === cObj.prevDBData[MC.MD5SUM] && cObj.md5 === newMd5,33  [MC.DEPLOYMENT_ID]: (cObj: Changeset) => (newDId) => cObj.prevDBData[MC.DEPLOYMENT_ID] === newDId34};35export const isValid = (dbMM: DBMigrationsManager, isFirstRun) => {36  if (isFirstRun) {37    beforeRerun();38  }39  if (checkExecutedCount(isFirstRun ? 3 : 2)(dbMM)) {40    if (isFirstRun) {41      return execTypeMatchAll(MC.EXECTYPE_EXECUTED)(dbMM);42    }43    return Promise.all(44      [45        matchByTemplate([getChangesetId(c1, fileName)], t1And2),46        matchByTemplate([getChangesetId(c2, fileName)], t1And2),47        matchByTemplate([getChangesetId(c3, fileName)], t3),48      ]).then(results => results.every(r => r === true));49  }50  return false;51};52const beforeRerun = () => {53  c1.changes[0].func = () => 'Modified func that should affect MD5';54  c2.changes[0].update.value = 'English-modified to trigger MD5';55  c3.changes[0].func = () => 'Modified func that should affect MD5 but will not trigger update (runOnChange=false)';...trigger-formatter.spec.js
Source:trigger-formatter.spec.js  
1import chai from 'chai'2import TriggerFormatter from './trigger-formatter';3chai.should();4describe('Trigger Formatter', () => {5    let formatter;6    beforeEach(() => {7        formatter = new TriggerFormatter();8    });9    describe('create table', () => {10        it('should format create trigger statement', () => {11            const createSql = 'CREATE TRIGGER `my_trigger` AFTER DELETE ON `my_table`\nFOR EACH ROW BEGIN\nupdate  `summary` set my_value = my_value - 1 where id = old.my_id;\nEND';12            let result = formatter.format({ match: createSql, name: 'my_trigger' });13            result.should.equal(`--liquibase formatted sql\n\n--changeset converter:source dbms:mysql endDelimiter:// runOnChange:true\nDROP TRIGGER IF EXISTS \`my_trigger\`;\n//\n\n${createSql}\n//\n`);14        });15        it('should format create trigger statement with specific author', () => {16            formatter = new TriggerFormatter('me');17            const createSql = 'CREATE TRIGGER `my_trigger` AFTER DELETE ON `my_table`\nFOR EACH ROW BEGIN\nupdate  `summary` set my_value = my_value - 1 where id = old.my_id;\nEND';18            let result = formatter.format({ match: createSql, name: 'my_trigger' });19            result.should.equal(`--liquibase formatted sql\n\n--changeset me:source dbms:mysql endDelimiter:// runOnChange:true\nDROP TRIGGER IF EXISTS \`my_trigger\`;\n//\n\n${createSql}\n//\n`);20        });21    });...watcher.js
Source:watcher.js  
1const logError = err => {2  if (err) {3    console.error(err);4  }5};6process.on('uncaughtException', logError);7process.on('unhandledRejection', logError);8const watcher = async (filepath, files, flags) => {9  let i = 0;10  const options = {11    skipReload: flags.includes('--skip-reload')12  };13  const run = async () => {14    //    console.clear();15    i += 1;16    console.log('[RUN]', i, filepath, options);17    try {18      if (filepath in require.cache) {19        delete require.cache[filepath];20      }21      const newRunner = require(filepath);22      await newRunner(require('./assert').assert, options);23      console.log('[DONE]');24    } catch (err) {25      console.error(err);26    }27  };28  const runOnChange = eventName => eventName === 'change' && run().catch(e => console.error(e));29  const {watch} = require('fs');30  files.concat([filepath]).forEach(file => watch(file, runOnChange));31  run().catch(e => console.error(e));32};33module.exports = {34  watcher...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.runOnChange(async () => {6    await page.waitForSelector('input[name=q]');7  });8  await browser.close();9})();10const { chromium } = require('playwright');11(async () => {12  const browser = await chromium.launch();13  const page = await browser.newPage();14  await page.waitForSelector('input[name=q]');15  await browser.close();16})();17const { chromium } = require('playwright');18(async () => {19  const browser = await chromium.launch();20  const page = await browser.newPage();21  await page.waitForSelector('input[name=q]');22  await browser.close();23})();24const { chromium } = require('playwright');25(async () => {26  const browser = await chromium.launch();27  const page = await browser.newPage();28  await page.waitForSelector('input[name=q]');29  await browser.close();30})();31const { chromium } = require('playwright');32(async () => {33  const browser = await chromium.launch();34  const page = await browser.newPage();35  await page.waitForSelector('input[name=q]');36  await browser.close();37})();38const { chromium } = require('playwright');39(async () => {Using AI Code Generation
1const { runOnChange } = require('@playwright/test/lib/server/inspectorServer');2const { chromium } = require('@playwright/test');3(async () => {4  const browser = await chromium.launch({ headless: false });5  const context = await browser.newContext();6  const page = await context.newPage();7  await runOnChange(page, () => page.click('text=Docs'));8  await browser.close();9})();1011- [Playwright Internal API](Using AI Code Generation
1const { runOnChange } = require('@playwright/test/lib/test');2const { test } = require('@playwright/test');3test('test', async ({ page }) => {4  await runOnChange(async () => {5  });6});7const { test } = require('@playwright/test');8test('test', async ({ page }) => {9});10const { test, expect } = require('@playwright/test');11test('test', async ({ page }) => {12  const title = await page.innerText('.navbar__inner .navbar__title');13  expect(title).toBe('Playwright');14});15const { test } = require('@playwright/test');16test('test', async ({ page }) => {17});18const { test } = require('@playwright/test');19test('test', async ({ browser }) => {20  const context = await browser.newContext();21  const page = await context.newPage();22});Using AI Code Generation
1const { runOnChange } = require('@playwright/test');2const fs = require('fs');3(async () => {4  await runOnChange({5    onChange: async () => {6      console.log('test.js file changed');7    },8  });9})();10const { test, expect } = require('@playwright/test');11test('test', async ({ page }) => {12  expect(await page.title()).toBe('Playwright');13});14{15  "scripts": {16  }17}18{19  "scripts": {20  }21}22{23  "scripts": {24  }25}26{27  "scripts": {28  }29}30{31  "scripts": {32  }33}34{35  "scripts": {36  }37}38{39  "scripts": {Using AI Code Generation
1const { runOnChange } = require('playwright/lib/server/inspectorInstrumentation');2const { test } = require('playwright/lib/test');3const path = require('path');4const fs = require('fs');5test('my test', async ({ page }) => {6  await runOnChange(page, path.join(__dirname, 'test.js'), async () => {7    await page.screenshot({ path: 'example.png' });8  });9});10const { runOnChange } = require('playwright/lib/server/inspectorInstrumentation');11const { test } = require('playwright/lib/test');12const path = require('path');13const fs = require('fs');14test('my test', async ({ page }) => {15  await runOnChange(page, path.join(__dirname, 'test.js'), async () => {16    await page.screenshot({ path: 'example.png' });17  });18});Using AI Code Generation
1const { runOnChange } = require('@playwright/test/lib/utils/utils');2const { test } = require('@playwright/test');3runOnChange({4  onChange: async ({ patterns }) => {5    await test.runWithConfig({6        {7          use: {8            viewport: { width: 1280, height: 720 },9          },10        },11    });12  },13});Using AI Code Generation
1const { runOnChange } = require('@playwright/test/lib/server/traceViewer');2runOnChange('path/to/file', (file) => {3  console.log(file);4});5### `runOnChange(path, callback)`6[Apache 2.0](LICENSE)Using AI Code Generation
1const { runOnChange } = require('@playwright/test/lib/utils/watcher');2const { test } = require('@playwright/test');3const testFile = './test.spec.js';4const testName = 'My Test';5const timeout = 1000;6const watch = true;7const headless = false;8const config = {9  use: {10    viewport: { width: 1280, height: 720 },11  },12    {13      use: {14      },15    },16};17const testParams = {18};19const runTest = async (testParams) => {20  await test.use(testParams.config);21  await test(testParams.testName, async ({ page }) => {22    await page.screenshot({ path: `example.png` });23  });24};25runOnChange(testParams, runTest);Using AI Code Generation
1const playwright = require('playwright');2(async () => {3  const browser = await playwright['chromium'].launch();4  const context = await browser.newContext();5  const page = await context.newPage();6  await page.type('input[title="Search"]', 'Hello World');7  await page.keyboard.press('Enter');8  await page.waitForNavigation();9  await page.waitForTimeout(5000);10  await page.screenshot({ path: `example.png` });11  await browser.close();12})();13const playwright = require('playwright');14(async () => {15  const browser = await playwright['chromium'].launch();16  const context = await browser.newContext();17  const page = await context.newPage();18  await page.type('input[title="Search"]', 'Hello World');19  await page.keyboard.press('Enter');20  await page.waitForNavigation();21  await page.waitForTimeout(5000);22  await page.screenshot({ path: `example.png` });23  await browser.close();24})();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!!
