Comparison with Cypress and Playwright
Navigation and Page Actions
Coded tests in Boozang are in Beta, so there are rapid changes happening. If any of these functions are missing or not working as expected, drop us an email at: support@boozang.com.
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.visitPage(url) | cy.visit(url) | await page.goto(url) | Navigates to a URL. |
$script.go(direction) | cy.go(direction) | await page.goBack() / await page.goForward() | Navigates back or forward in browser history. |
$script.visitPage(url) | cy.reload() | await page.reload() | Reloads the current page. |
$script.viewport(width, height) | cy.viewport(width, height) | await page.setViewportSize({ width, height }) | Sets the browser viewport size. |
Element Selection
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.get(selector) | cy.get(selector) | await page.$(selector) / page.locator(selector) | Gets one or more DOM elements by selector. |
$script.contains(text) | cy.contains(text) | await page.locator('text=' + text) | Gets DOM elements containing the specified text. |
$script.find(selector) | cy.find(selector) | await elementHandle.$(selector) | Finds descendants of the DOM elements that match the selector. |
Interactions
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.click(selector) | cy.click() | await page.click(selector) | Clicks on a DOM element. |
$script.type(selector, text) | cy.type(text) | await page.type(selector, text) | Types into a DOM element. |
$script.clear(selector) | cy.clear() | await page.fill(selector, '') | Clears the value of an input or textarea. |
$script.set(value) | cy.select(value) | await page.selectOption(selector, value) | Selects an option in a <select> element. |
Assertions
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.hasData(locator, value) | cy.should(assertion) | expect(locator).toHaveProperty('property', value) | Asserts that the element satisfies the given condition. |
$script.expect(subject) | cy.expect(subject) | expect(subject).toBe(value) | Asserts that the subject satisfies the condition. |
$script.and(assertion) | cy.and(assertion) | expect(locator).toHaveProperty('property', value) | Adds additional assertions. |
Waiting
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.wait(time) | cy.wait(time) | await page.waitForTimeout(time) | Waits for a specified amount of time. |
$script.wait(alias) | cy.wait(alias) | await page.waitForResponse(route) | Waits for a route or request alias. |
Network Requests
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.server() | cy.server() | await page.route(url, handler) | Starts a server to begin routing responses. |
$script.route(url) | cy.route(url) | await page.route(url, handler) | Defines a route for a URL to intercept requests. |
$script.request(options) | cy.request(options) | await page.request(url, options) | Makes an HTTP request. |
Fixtures
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.fixture(filePath) | cy.fixture(filePath) | await page.addInitScript({ path: filePath }) | Loads a fixed set of data located in a file. |
Clock and Timers
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.clock() | cy.clock() | await page.context().newCDPSession(page) and await session.send('Animation.enable') | Controls the clock to test time-dependent code. |
$script.tick(time) | cy.tick(time) | await session.send('Animation.setPlaybackRate', { playbackRate: time }) | Moves time forward by a specified amount. |
Aliases
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.as(alias) | cy.as(alias) | const alias = await page.$(selector) | Alias a DOM element or a route. |
$script.get(alias) | cy.get(alias) | await alias.click() | Gets the element or route by alias. |
Custom Commands
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.add(name, callback) | Cypress.Commands.add(name, callback) | Extend Playwright's Page or Browser context by adding custom functions directly to the Playwright API objects. | Adds a custom command to Cypress. |
Handling Frames and Windows
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.frameLoaded() | cy.frameLoaded() | await page.frameLocator(selector) | Checks that a frame has loaded. |
$script.iframe() | cy.iframe() | await page.frameLocator(selector).frame() | Gets an iframe by selector. |
$script.window() | cy.window() | const [newPage] = await Promise.all([ page.waitForEvent('popup'), page.click(selector) ]); | Accesses the window object. |
File Uploads
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.attachFile('input[type="file"]', filePath) | cy.get('input[type="file"]').attachFile(filePath) | await page.setInputFiles('input[type="file"]', filePath) | Sets files to upload for an input element. |
Screenshots and PDFs
| Boozang Command | Cypress Command | Playwright Command | Description |
|---|---|---|---|
$script.screenshot() | cy.screenshot() | await page.screenshot({ path: 'screenshot.png' }) | Takes a screenshot of the page. |
$script.screenshot('filename') | cy.screenshot('filename') | await page.screenshot({ path: 'filename.png' }) | Takes a screenshot with a specified filename. |
$script.pdf() | cy.pdf() | await page.pdf({ path: 'document.pdf' }) | Generates a PDF of the page. |