end-to-end browser testing based on playwright

tuiv enables you to write tests like this:

describe('checkout', () => {
	it('should sucessfully checkout', async ({ page }) => {
		await page.goto('/')
		await page.get('.some .selector')
			.type('typing some text')
		await page.get('.non-existing').should.not.exist()

tuiv aims to:

  • provide a chaining command and assertion syntax based on native async/await
  • use modern browser automation for all browsers via playwright
  • auto-retry everything
  • be a fixture based test runner

tuiv achieves this with proxies. Lots and lots of proxies.