CodeceptJS ‐ supercharged
End 2 End Testing

First AI-powered testing framework πŸͺ„
CodeceptUI

Quickstart

CodeceptJS is opensource MIT licensed testing framework.

Works with your favorite frontend frameworks β†’ Vue Angular

checklist
Scenario Driven
Write acceptance tests from user's perspective. Make tests readable and easy to follow.
Mind map paper
Driver Agnostic
Run your tests via Playwright, WebDriver, Puppeteer, TestCafe, Protractor, Appium. The code is the same. Learn More
Html coding
Interactive Debug
Control tests as they run. Pause tests at any point and execute commands to try locators. Learn More
feature
Rich Locators
Use semantic locators, CSS, XPath to find elements on page Learn More
feature
PageObjects
PageObjects are essential to write stable and reusable code! Learn More
feature
Web & Mobile Testing
Test native mobile apps using Appium or Detox. Learn More
feature
Cucumber-like BDD
Automate business scenarios as you do in CucumberJS Learn More
feature
API Testing
Write tests for REST and GraphQL APIs Learn More
feature
Data Management
Create fake data and clean it up via REST API Learn More
feature
Parallel Testing
Tests are split into chunks and executed in multiple processes. Learn More
feature
Reduced Flackiness
Automatically retry failed steps Learn More
feature
AI-powered
Use OpenAI GPT to heal failing tests Learn More

# Realworld Example

Can we use it for long scenarios? Sure!

const { faker } = require('@faker-js/faker');                               // Use 3rd-party JS code

Feature('Store');

Scenario('Create a new store', async ({ I, login, SettingsPage }) => {
  const storeName = faker.lorem.slug();
  login('customer');                                          // Login customer from saved cookies
  SettingsPage.open();                                        // Use Page objects
  I.dontSee(storeName, '.settings');                          // Assert text not present inside an element (located by CSS)
  I.click('Add', '.settings');                                // Click link by text inside element (located by CSS)
  I.fillField('Store Name', storeName);                       // Fill fields by labels or placeholders
  I.fillField('Email', faker.internet.email());
  I.fillField('Telephone', faker.phone.phoneNumberFormat());
  I.selectInDropdown('Status', 'Active');                     // Use custom methods
  I.retry(2).click('Create');                                 // Retry flaky step
  I.waitInUrl('/settings/setup/stores');                      // Explicit waiter
  I.see(storeName, '.settings');                              // Assert text present inside an element (located by CSS)
  const storeId = await I.grabTextFrom('#store-id');          // Use await to get information from browser
  I.say(`Created a store with ${storeId}`);                   // Print custom comments
}).tag('stores');`;

Trusted By Enterprises

Loved By Teams

We have been using CodeceptJS as our UI testing framework, and it has made writing tests so simp le for us, the amount of options and features available in CodeceptJS just out of the box are perfect for us to test an application like Percona Monitoring and Management (PMM), with so many dashboards & Metric plots. We would recommend CodeceptJS to anyone who is looking for a Javascript based testing framework.

kala
Puneet Kala
Frontend QA Automation Engineer at Percona

We were searching for a solution to write tests which are good to read and easy to write. It must be able to run on several browsers and understandable across different teams with different knowledge and different frameworks in usage. CodeceptJS helps us with all this and much more at Porsche and we are happy that we made that decision.

mitko
Mitko Tschimev
Frontend Tech Lead at My Porsche Core
πŸš€ Get more of CodeceptJS
βœ… Try Testomat.io, next-gen Test Management system for automated & manual tests.
Brought to you by creators of CodeceptJS.