Best JavaScript code snippet using playwright-internal
fullyVested.spec.js
Source:fullyVested.spec.js
...34 await homePage.navigate();35 await homePage.loginWithSeedPhraseLocalStorage(latestLockupTestAccount.accountId, latestLockupTestAccount.seedPhrase);36 const profilePage = new ProfilePage(page);37 await profilePage.navigate();38 await expect(page).toMatchText("data-test-id=lockupAccount.total", new RegExp(formatNearAmount(lockupTotalBalance, 5)));39 await expect(page).toMatchText("data-test-id=lockupAccount.locked", /0 NEAR/);40 await expect(page).toMatchText(41 "data-test-id=lockupAccount.unlocked",42 new RegExp(`${formatNearAmount(lockupTotalBalance, 5)} NEAR`)43 );44 await expect(page).toMatchText(45 "data-test-id=lockupAccount.availableToTransfer",46 new RegExp(`${formatNearAmount(lockupTotalBalance, 5)} NEAR`)47 );48 await expect(page).toMatchText("data-test-id=lockupAccount.reservedForStorage", /3.5 NEAR/);49 await expect(page).toMatchText(50 "data-test-id=lockupAccount.accountId",51 new RegExp(`${latestLockupContractAccount.accountId}`)52 );53 await expect(page).toHaveSelector("data-test-id=lockupTransferToWalletButton");54 });55 test("latest lockup contract withdraws and updates balances and cleans up correctly", async ({ page }) => {56 const homePage = new HomePage(page);57 await homePage.navigate();58 await homePage.loginWithSeedPhraseLocalStorage(latestLockupTestAccount.accountId, latestLockupTestAccount.seedPhrase);59 const profilePage = new ProfilePage(page);60 await profilePage.navigate();61 const { total: lockupTotalBalance } = await latestLockupContractAccount.getUpdatedBalance();62 const initialBalanceDisplay = await profilePage.getOwnerAccountTotalBalance();63 const initialOwnerAccountDisplayedBalance = new BN(parseNearAmount(initialBalanceDisplay));64 const { total: initialOwnerAccountBalance } = await latestLockupTestAccount.getUpdatedBalance();65 await expect(page).toHaveSelector("data-test-id=lockupTransferToWalletButton");66 await profilePage.transferToWallet();67 await expect(page).not.toHaveSelector("data-test-id=lockupTransferToWalletButton");68 await expect(page).not.toHaveSelector("data-test-id=lockupAccount.total");69 const balanceDisplay = await profilePage.getOwnerAccountTotalBalance();70 const ownerAccountDisplayedBalance = new BN(parseNearAmount(balanceDisplay));71 const displayedOwnersBalanceChange = ownerAccountDisplayedBalance.sub(initialOwnerAccountDisplayedBalance);72 const { total: ownerAccountBalance } = await latestLockupTestAccount.getUpdatedBalance();73 const ownersBalanceChange = new BN(ownerAccountBalance).sub(new BN(initialOwnerAccountBalance));74 const uncertaintyForGas = new BN(parseNearAmount("0.1"));75 await expect(bnIsWithinUncertainty(uncertaintyForGas, new BN(lockupTotalBalance), displayedOwnersBalanceChange)).toBe(76 true77 );78 await expect(bnIsWithinUncertainty(uncertaintyForGas, new BN(lockupTotalBalance), ownersBalanceChange)).toBe(true);79 80 await new StakeUnstakePage(page).clickStakingTab();81 await expect(page).toHaveSelectorCount("data-test-id=accountSelectAvailableBalance", 1);82 });83 test("v2 lockup contract displays zero as locked, correct unlocked, correct available to transfer and other info correctly", async ({84 page,85 }) => {86 const { total: lockupTotalBalance } = await v2LockupContractAccount.getUpdatedBalance();87 const homePage = new HomePage(page);88 await homePage.navigate();89 await homePage.loginWithSeedPhraseLocalStorage(v2LockupTestAccount.accountId, v2LockupTestAccount.seedPhrase);90 const profilePage = new ProfilePage(page);91 await profilePage.navigate();92 await expect(page).toMatchText("data-test-id=lockupAccount.total", new RegExp(formatNearAmount(lockupTotalBalance, 5)));93 await expect(page).toMatchText("data-test-id=lockupAccount.locked", /0 NEAR/);94 await expect(page).toMatchText(95 "data-test-id=lockupAccount.unlocked",96 new RegExp(`${formatNearAmount(lockupTotalBalance, 5)} NEAR`)97 );98 await expect(page).toMatchText(99 "data-test-id=lockupAccount.availableToTransfer",100 new RegExp(`${formatNearAmount(lockupTotalBalance, 5)} NEAR`)101 );102 await expect(page).toMatchText("data-test-id=lockupAccount.reservedForStorage", /35 NEAR/);103 await expect(page).toMatchText(104 "data-test-id=lockupAccount.accountId",105 new RegExp(`${v2LockupContractAccount.accountId}`)106 );107 await expect(page).toHaveSelector("data-test-id=lockupTransferToWalletButton");108 });109 test("v2 lockup contract withdraws and updates balances and cleans up correctly", async ({ page }) => {110 const homePage = new HomePage(page);111 await homePage.navigate();112 await homePage.loginWithSeedPhraseLocalStorage(v2LockupTestAccount.accountId, v2LockupTestAccount.seedPhrase);113 const profilePage = new ProfilePage(page);114 await profilePage.navigate();115 const { total: lockupTotalBalance } = await v2LockupContractAccount.getUpdatedBalance();116 const initialBalanceDisplay = await profilePage.getOwnerAccountTotalBalance();117 const initialOwnerAccountDisplayedBalance = new BN(parseNearAmount(initialBalanceDisplay));...
playwright.test.js
Source:playwright.test.js
...59 while (1) {60 switch (_context3.prev = _context3.next) {61 case 0:62 _context3.next = 2;63 return expect(page).toMatchText(/.*Saurischia.*/);64 case 2:65 _context3.next = 4;66 return expect(page).toMatchText(/.*Ornithischians.*/);67 case 4:68 _context3.next = 6;69 return expect(page).toMatchText(/.*Coelophysoids.*/);70 case 6:71 _context3.next = 8;72 return (0, _visualRegression.matchScreenshot)("displays_a_tree");73 case 8:74 case "end":75 return _context3.stop();76 }77 }78 }, _callee3);79})));80it("selects a node", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {81 var saurischia;82 return regeneratorRuntime.wrap(function _callee4$(_context4) {83 while (1) {84 switch (_context4.prev = _context4.next) {85 case 0:86 _context4.next = 2;87 return expect(page).toMatchText(/.*Saurischia.*/);88 case 2:89 _context4.next = 4;90 return (0, _testUtil.findNodeElement)("Saurischia");91 case 4:92 saurischia = _context4.sent;93 _context4.next = 7;94 return (0, _testUtil.selectNode)(saurischia);95 case 7:96 _context4.next = 9;97 return (0, _testUtil.expectToBeSelected)(saurischia);98 case 9:99 _context4.next = 11;100 return (0, _visualRegression.matchScreenshot)("selects_a_node");101 case 11:102 case "end":103 return _context4.stop();104 }105 }106 }, _callee4);107})));108it("opens a node", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() {109 var theropods;110 return regeneratorRuntime.wrap(function _callee5$(_context5) {111 while (1) {112 switch (_context5.prev = _context5.next) {113 case 0:114 _context5.next = 2;115 return expect(page).toMatchText(/.*Saurischia.*/);116 case 2:117 _context5.next = 4;118 return (0, _testUtil.findNodeElement)("Theropods");119 case 4:120 theropods = _context5.sent;121 _context5.next = 7;122 return (0, _testUtil.expectToBeClosed)(theropods);123 case 7:124 _context5.next = 9;125 return (0, _testUtil.openNode)(theropods);126 case 9:127 _context5.next = 11;128 return (0, _testUtil.expectToBeOpen)(theropods);129 case 11:...
matchers.js
Source:matchers.js
1"use strict";2Object.defineProperty(exports, "__esModule", {3 value: true4});5exports.toBeChecked = toBeChecked;6exports.toBeDisabled = toBeDisabled;7exports.toBeEditable = toBeEditable;8exports.toBeEmpty = toBeEmpty;9exports.toBeEnabled = toBeEnabled;10exports.toBeFocused = toBeFocused;11exports.toBeHidden = toBeHidden;12exports.toBeVisible = toBeVisible;13exports.toContainText = toContainText;14exports.toHaveAttribute = toHaveAttribute;15exports.toHaveClass = toHaveClass;16exports.toHaveCount = toHaveCount;17exports.toHaveCSS = toHaveCSS;18exports.toHaveId = toHaveId;19exports.toHaveJSProperty = toHaveJSProperty;20exports.toHaveText = toHaveText;21exports.toHaveTitle = toHaveTitle;22exports.toHaveURL = toHaveURL;23exports.toHaveValue = toHaveValue;24var _toBeTruthy = require("./toBeTruthy");25var _toEqual = require("./toEqual");26var _toMatchText = require("./toMatchText");27/**28 * Copyright Microsoft Corporation. All rights reserved.29 *30 * Licensed under the Apache License, Version 2.0 (the "License");31 * you may not use this file except in compliance with the License.32 * You may obtain a copy of the License at33 *34 * http://www.apache.org/licenses/LICENSE-2.035 *36 * Unless required by applicable law or agreed to in writing, software37 * distributed under the License is distributed on an "AS IS" BASIS,38 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.39 * See the License for the specific language governing permissions and40 * limitations under the License.41 */42function toBeChecked(locator, options) {43 return _toBeTruthy.toBeTruthy.call(this, 'toBeChecked', locator, 'Locator', async timeout => {44 return await locator.isChecked({45 timeout46 });47 }, options);48}49function toBeDisabled(locator, options) {50 return _toBeTruthy.toBeTruthy.call(this, 'toBeDisabled', locator, 'Locator', async timeout => {51 return await locator.isDisabled({52 timeout53 });54 }, options);55}56function toBeEditable(locator, options) {57 return _toBeTruthy.toBeTruthy.call(this, 'toBeEditable', locator, 'Locator', async timeout => {58 return await locator.isEditable({59 timeout60 });61 }, options);62}63function toBeEmpty(locator, options) {64 return _toBeTruthy.toBeTruthy.call(this, 'toBeEmpty', locator, 'Locator', async timeout => {65 return await locator.evaluate(element => {66 var _element$textContent;67 if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') return !element.value;68 return !((_element$textContent = element.textContent) !== null && _element$textContent !== void 0 && _element$textContent.trim());69 }, {70 timeout71 });72 }, options);73}74function toBeEnabled(locator, options) {75 return _toBeTruthy.toBeTruthy.call(this, 'toBeEnabled', locator, 'Locator', async timeout => {76 return await locator.isEnabled({77 timeout78 });79 }, options);80}81function toBeFocused(locator, options) {82 return _toBeTruthy.toBeTruthy.call(this, 'toBeFocused', locator, 'Locator', async timeout => {83 return await locator.evaluate(element => {84 return document.activeElement === element;85 }, {86 timeout87 });88 }, options);89}90function toBeHidden(locator, options) {91 return _toBeTruthy.toBeTruthy.call(this, 'toBeHidden', locator, 'Locator', async timeout => {92 return await locator.isHidden({93 timeout94 });95 }, options);96}97function toBeVisible(locator, options) {98 return _toBeTruthy.toBeTruthy.call(this, 'toBeVisible', locator, 'Locator', async timeout => {99 return await locator.isVisible({100 timeout101 });102 }, options);103}104function toContainText(locator, expected, options) {105 return _toMatchText.toMatchText.call(this, 'toContainText', locator, 'Locator', async timeout => {106 if (options !== null && options !== void 0 && options.useInnerText) return await locator.innerText({107 timeout108 });109 return (await locator.textContent()) || '';110 }, expected, { ...options,111 matchSubstring: true112 });113}114function toHaveAttribute(locator, name, expected, options) {115 return _toMatchText.toMatchText.call(this, 'toHaveAttribute', locator, 'Locator', async timeout => {116 return (await locator.getAttribute(name, {117 timeout118 })) || '';119 }, expected, options);120}121function toHaveClass(locator, expected, options) {122 if (Array.isArray(expected)) {123 return _toEqual.toEqual.call(this, 'toHaveClass', locator, 'Locator', async () => {124 return await locator.evaluateAll(ee => ee.map(e => e.className));125 }, expected, options);126 } else {127 return _toMatchText.toMatchText.call(this, 'toHaveClass', locator, 'Locator', async timeout => {128 return await locator.evaluate(element => element.className, {129 timeout130 });131 }, expected, options);132 }133}134function toHaveCount(locator, expected, options) {135 return _toEqual.toEqual.call(this, 'toHaveCount', locator, 'Locator', async timeout => {136 return await locator.count();137 }, expected, options);138}139function toHaveCSS(locator, name, expected, options) {140 return _toMatchText.toMatchText.call(this, 'toHaveCSS', locator, 'Locator', async timeout => {141 return await locator.evaluate(async (element, name) => {142 return window.getComputedStyle(element)[name];143 }, name, {144 timeout145 });146 }, expected, options);147}148function toHaveId(locator, expected, options) {149 return _toMatchText.toMatchText.call(this, 'toHaveId', locator, 'Locator', async timeout => {150 return (await locator.getAttribute('id', {151 timeout152 })) || '';153 }, expected, options);154}155function toHaveJSProperty(locator, name, expected, options) {156 return _toEqual.toEqual.call(this, 'toHaveJSProperty', locator, 'Locator', async timeout => {157 return await locator.evaluate((element, name) => element[name], name, {158 timeout159 });160 }, expected, options);161}162function toHaveText(locator, expected, options) {163 if (Array.isArray(expected)) {164 return _toEqual.toEqual.call(this, 'toHaveText', locator, 'Locator', async () => {165 return locator.evaluateAll((ee, useInnerText) => {166 return ee.map(e => useInnerText ? e.innerText : e.textContent || '');167 }, options === null || options === void 0 ? void 0 : options.useInnerText);168 }, expected, options);169 } else {170 return _toMatchText.toMatchText.call(this, 'toHaveText', locator, 'Locator', async timeout => {171 if (options !== null && options !== void 0 && options.useInnerText) return await locator.innerText({172 timeout173 });174 return (await locator.textContent()) || '';175 }, expected, options);176 }177}178function toHaveTitle(page, expected, options) {179 return _toMatchText.toMatchText.call(this, 'toHaveTitle', page, 'Page', async () => {180 return await page.title();181 }, expected, options);182}183function toHaveURL(page, expected, options) {184 return _toMatchText.toMatchText.call(this, 'toHaveURL', page, 'Page', async () => {185 return page.url();186 }, expected, options);187}188function toHaveValue(locator, expected, options) {189 return _toMatchText.toMatchText.call(this, 'toHaveValue', locator, 'Locator', async timeout => {190 return await locator.inputValue({191 timeout192 });193 }, expected, options);...
fullyUnvested.spec.js
Source:fullyUnvested.spec.js
...41 await homePage.navigate();42 await homePage.loginWithSeedPhraseLocalStorage(latestLockupTestAccount.accountId, latestLockupTestAccount.seedPhrase);43 const profilePage = new ProfilePage(page);44 await profilePage.navigate();45 await expect(page).toMatchText("data-test-id=lockupAccount.total", new RegExp(formatNearAmount(lockupTotalBalance, 5)));46 await expect(page).toMatchText("data-test-id=lockupAccount.locked", /5 NEAR/);47 await expect(page).toMatchText(48 "data-test-id=lockupAccount.unlocked",49 new RegExp(`${formatNearAmount(lockupUnlockedAmount, 5)} NEAR`)50 );51 await expect(page).toMatchText(52 "data-test-id=lockupAccount.availableToTransfer",53 new RegExp(`${formatNearAmount(lockupAvailableToTransfer, 5)} NEAR`)54 );55 await expect(page).toMatchText("data-test-id=lockupAccount.reservedForStorage", /3.5 NEAR/);56 await expect(page).toMatchText(57 "data-test-id=lockupAccount.accountId",58 new RegExp(`${latestLockupContractAccount.accountId}`)59 );60 await expect(page).not.toHaveSelector("data-test-id=lockupTransferToWalletButton");61 });62 test("v2 lockup contract displays the whole amount as locked, correct unlocked, correct available to transfer and other info correctly", async ({63 page,64 }) => {65 const { total: lockupTotalBalance } = await v2LockupContractAccount.getUpdatedBalance();66 const lockupUnlockedAmount = new BN(lockupTotalBalance)67 .sub(new BN(parseNearAmount(lockupAmount)))68 .toString();69 const lockupAvailableToTransfer = await v2LockupContractAccount.nearApiJsAccount.viewFunction(70 v2LockupContractAccount.accountId,71 "get_liquid_owners_balance"72 );73 const homePage = new HomePage(page);74 await homePage.navigate();75 await homePage.loginWithSeedPhraseLocalStorage(v2LockupTestAccount.accountId, v2LockupTestAccount.seedPhrase);76 const profilePage = new ProfilePage(page);77 await profilePage.navigate();78 await expect(page).toMatchText("data-test-id=lockupAccount.total", new RegExp(formatNearAmount(lockupTotalBalance, 5)));79 await expect(page).toMatchText("data-test-id=lockupAccount.locked", /5 NEAR/);80 await expect(page).toMatchText(81 "data-test-id=lockupAccount.unlocked",82 new RegExp(`${formatNearAmount(lockupUnlockedAmount, 5)} NEAR`)83 );84 await expect(page).toMatchText(85 "data-test-id=lockupAccount.availableToTransfer",86 new RegExp(`${formatNearAmount(lockupAvailableToTransfer, 5)} NEAR`)87 );88 await expect(page).toMatchText("data-test-id=lockupAccount.reservedForStorage", /35 NEAR/);89 await expect(page).toMatchText(90 "data-test-id=lockupAccount.accountId",91 new RegExp(`${v2LockupContractAccount.accountId}`)92 );93 await expect(page).not.toHaveSelector("data-test-id=lockupTransferToWalletButton");94 });...
1-config.js
Source:1-config.js
...22 "crowdsec_bouncer_general_connection_api_key",23 "bad-key",24 );25 await page.click("#crowdsec_bouncer_general_connection_test");26 await expect(page).toMatchText(27 "#lapi_ping_result",28 /Technical error while testing connection/,29 );30 await fillInput(31 "crowdsec_bouncer_general_connection_api_key",32 BOUNCER_KEY,33 );34 });35});36describe(`Extension configuration modification`, () => {37 it("Should modify the cache", async () => {38 // Test File System39 await selectElement(40 "crowdsec_bouncer_advanced_cache_technology",41 "phpfs",42 );43 await onAdminSaveSettings();44 await expect(page).toMatchText(45 "#messages",46 /CrowdSec new cache \(File system\) has been successfully tested./,47 );48 await page.waitForSelector(49 "#crowdsec_bouncer_advanced_cache_clear_cache",50 );51 await page.click("#crowdsec_bouncer_advanced_cache_clear_cache");52 await expect(page).toMatchText(53 "#cache_clearing_result",54 "CrowdSec cache (File system) has been cleared.",55 );56 await page.click("#crowdsec_bouncer_advanced_cache_prune_cache");57 await expect(page).toMatchText(58 "#cache_pruning_result",59 "CrowdSec cache (File system) has been pruned.",60 );61 // Test Redis62 await selectElement(63 "crowdsec_bouncer_advanced_cache_technology",64 "redis",65 );66 await fillInput(67 "crowdsec_bouncer_advanced_cache_redis_dsn",68 "redis://redis:6379",69 );70 await onAdminSaveSettings();71 await expect(page).toMatchText(72 "#messages",73 /CrowdSec new cache \(Redis\) has been successfully tested./,74 );75 await expect(page).toMatchText(76 "#messages",77 /File system cache has been cleared./,78 );79 await page.click("#crowdsec_bouncer_advanced_cache_clear_cache");80 await expect(page).toMatchText(81 "#cache_clearing_result",82 "CrowdSec cache (Redis) has been cleared.",83 );84 await fillInput("crowdsec_bouncer_advanced_cache_redis_dsn", "bad-dsn");85 await onAdminSaveSettings(false);86 await expect(page).toMatchText(87 "#messages",88 /Technical error while testing the Redis cache/,89 );90 await expect(page).toMatchValue(91 "#crowdsec_bouncer_advanced_cache_redis_dsn",92 "redis://redis:6379",93 );94 // Test Memcached95 await selectElement(96 "crowdsec_bouncer_advanced_cache_technology",97 "memcached",98 );99 await fillInput(100 "crowdsec_bouncer_advanced_cache_memcached_dsn",101 "memcached://memcached:11211",102 );103 await onAdminSaveSettings();104 await expect(page).toMatchText(105 "#messages",106 /CrowdSec new cache \(Memcached\) has been successfully tested./,107 );108 await expect(page).toMatchText(109 "#messages",110 /Redis cache has been cleared./,111 );112 await page.click("#crowdsec_bouncer_advanced_cache_clear_cache");113 await expect(page).toMatchText(114 "#cache_clearing_result",115 "CrowdSec cache (Memcached) has been cleared.",116 );117 await fillInput(118 "crowdsec_bouncer_advanced_cache_memcached_dsn",119 "memcached://memcached:18579",120 );121 await onAdminSaveSettings(false);122 await expect(page).toMatchText(123 "#messages",124 /Technical error while testing the Memcached cache/,125 );126 await expect(page).toMatchValue(127 "#crowdsec_bouncer_advanced_cache_memcached_dsn",128 "memcached://memcached:11211",129 );130 });131 it("Should flush the cache", async () => {132 await flushCache();133 });...
toMatchText.js
Source:toMatchText.js
...21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.22 * See the License for the specific language governing permissions and23 * limitations under the License.24 */25async function toMatchText(matcherName, receiver, receiverType, query, expected, options = {}) {26 const testInfo = (0, _globals.currentTestInfo)();27 if (!testInfo) throw new Error(`${matcherName} must be called during the test`);28 (0, _util.expectType)(receiver, receiverType, matcherName);29 const matcherOptions = {30 isNot: this.isNot,31 promise: this.promise32 };33 if (!(typeof expected === 'string') && !(expected && typeof expected.test === 'function')) {34 throw new Error((0, _jestMatcherUtils.matcherErrorMessage)((0, _jestMatcherUtils.matcherHint)(matcherName, undefined, undefined, matcherOptions), `${(0, _jestMatcherUtils.EXPECTED_COLOR)('expected')} value must be a string or regular expression`, (0, _jestMatcherUtils.printWithType)('Expected', expected, _jestMatcherUtils.printExpected)));35 }36 let received;37 let pass = false; // TODO: interrupt on timeout for nice message.38 await (0, _util.pollUntilDeadline)(testInfo, async remainingTime => {39 received = await query(remainingTime);...
singup.js
Source:singup.js
...24 await this.inputConfirmPassword.fill(data.confirmPassword)25 await this.buttonRegister.click()26 }27 async validateFormError(errorMessage) {28 await expect(this.pErrorMessage).toMatchText(errorMessage)29 }30 async validateUrlStepTwo() {31 expect(this.page).toHaveURL('/profile/finish-registration')32 }33 async validateHelloUserName(helloName) {34 await expect(this.h2HelloName).toMatchText(helloName)35 }36}...
4-geolocation.js
Source:4-geolocation.js
...6 await removeAllDecisions();7 });8 it("Should get JP", async () => {9 await runGeolocationTest(JAPAN_IP, false);10 await expect(page).toMatchText(/Country: JP/);11 });12 it("Should get FR", async () => {13 await runGeolocationTest(FRANCE_IP, false);14 await expect(page).toMatchText(/Country: FR/);15 });16 it("Should get FR and FR as it will be saved in session", async () => {17 await runGeolocationTest(FRANCE_IP, true);18 await expect(page).toMatchText(/Country: FR/);19 await runGeolocationTest(JAPAN_IP, true);20 await expect(page).toMatchText(/Country: FR/);21 });...
Using AI Code Generation
1const { test, expect } = require('@playwright/test');2test('basic test', async ({ page }) => {3 const title = page.locator('.navbar__inner .navbar__title');4 await expect(title).toMatchText('Playwright');5});6const { test, expect } = require('@playwright/test');7test('basic test', async ({ page }) => {8 const title = page.locator('.navbar__inner .navbar__title');9 await expect(title).toMatchText(/play.*t/);10});11const { test, expect } = require('@playwright/test');12test('basic test', async ({ page }) => {13 const title = page.locator('.navbar__inner .navbar__title');14 await expect(title).toMatchText(/play.*t/i);15});16const { test, expect } = require('@playwright/test');17test('basic test', async ({ page }) => {18 const title = page.locator('.navbar__inner .navbar__title');19 await expect(title).toMatchText(/play.*t/g);20});21const { test, expect } = require('@playwright/test');22test('basic test', async ({ page }) => {23 const title = page.locator('.navbar__inner .navbar__title');24 await expect(title).toMatchText(/play.*t/gi);25});26const { test, expect } = require('@playwright/test');27test('basic test', async ({ page }) => {28 const title = page.locator('.navbar__inner .navbar__title');29 await expect(title).toMatchText(/play.*t/gim);30});31const { test, expect
Using AI Code Generation
1const { test, expect } = require('@playwright/test');2test('My first test', async ({ page }) => {3 await expect(page).toMatchText('h1', 'Playwright');4});5module.exports = {6 launchOptions: {7 },8};9const { test, expect } = require('@playwright/test');10test.use({11 browserOptions: {},12 page: async ({ browserName, browserOptions }, use) => {13 const browser = await playwright[browserName].launch(browserOptions);14 const context = await browser.newContext();15 const page = await context.newPage();16 await use(page);17 await page.close();18 await context.close();19 await browser.close();20 },21});22test('My first test', async ({ page }) => {23 await expect(page).toMatchText('h1', 'Playwright');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!!