<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/playwright-1-64-shuffle-test-locks-and-breaking-changes-jxegkrkbp" -->

---
title: Playwright 1.64: Shuffle, Test Locks and Breaking Changes
description: Playwright 1.64 adds a --shuffle flag to randomize test order and expose order-dependent tests, plus a lock option in test.describe.configure() to keep tests...
canonical: https://daily.dev/posts/playwright-1-64-shuffle-test-locks-and-breaking-changes-jxegkrkbp
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Playwright 1.64: Shuffle, Test Locks and Breaking Changes | daily.dev
og:description: Playwright 1.64 adds a --shuffle flag to randomize test order and expose order-dependent tests, plus a lock option in test.describe.configure() to keep tests...
og:url: https://daily.dev/posts/playwright-1-64-shuffle-test-locks-and-breaking-changes-jxegkrkbp
og:image: https://api.daily.dev/og/posts/jxeGkRKbP.png
og:image:alt: Playwright 1.64: Shuffle, Test Locks and Breaking Changes
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Playwright 1.64: Shuffle, Test Locks and Breaking Changes

**[Currents](https://daily.dev/sources/currents)** · 12 min read · 1 upvotes · 0 comments

## Summary

Playwright 1.64 adds a --shuffle flag to randomize test order and expose order-dependent tests, plus a lock option in test.describe.configure() to keep tests sharing a resource like a live account from running concurrently. The release also ships several breaking changes: elements inside hidden iframes now count as hidden, device descriptors now forward screen size (affecting visual baselines), --update-snapshots=missing now passes instead of failing, and JSX in test files now follows tsconfig.json settings. Guidance covers running shuffle nightly with a saved seed rather than on PR gates, scoping locks narrowly, updating CI to explicitly select projects so default:false projects don't silently drop out, and sequencing the upgrade so breaking-change fixes land before enabling shuffle.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://currents.dev/posts/playwright-1-64-shuffle-test-locks-and-breaking-changes>

## Questions this post answers

### What breaking changes does Playwright 1.64 introduce?

Playwright 1.64 introduces several breaking changes: elements inside a hidden iframe (e.g. visibility: hidden) now count as hidden for actions, locator.isVisible() and expect(locator).toBeVisible(); device descriptors like devices['Desktop Chrome'] now forward the screen property so window.screen and media queries see the emulated screen size; --update-snapshots=missing now passes the run instead of failing when only missing snapshots are created; and JSX in test files now follows tsconfig.json's jsx options, defaulting to the automatic runtime from react/jsx-runtime.

_Teams planning a Playwright upgrade can track breaking-change writeups like these through daily.dev._

### How do I prevent Playwright tests that share a live third-party account from running at the same time?

Use the new lock option in test.describe.configure() in Playwright 1.64, which applies a named lock to every test in the enclosing file or group, including nested groups. Tests sharing a lock name never run concurrently, while all other tests keep running in parallel; a test can hold several locks and starts only once all are free. This avoids making the whole suite serial just to protect a few shared-resource tests.

_Developers wiring up shared-resource test isolation can follow Playwright changes like this on daily.dev._

### Why did my Playwright --update-snapshots=missing run start passing instead of failing in version 1.64?

Starting in Playwright 1.64, tests that only create missing snapshots now pass under the 'missing' mode of testConfig.updateSnapshots, whereas before that run was red to signal a new baseline. The mode without this setting, now called 'default', still writes missing snapshots and fails the test as before. Pipelines relying on a red run to flag new baselines should add an explicit step that fails or commits when new snapshots are written.

_Anyone debugging visual-baseline CI behavior can track snapshot-mode changes like this via daily.dev._

## Similar posts on daily.dev

- [Time-Based Sharding in Pest v4.6.0](https://daily.dev/posts/time-based-sharding-in-pest-v4-6-0-ymszvvnk6) · Laravel News · 0 upvotes · 0 comments

---

Tags: [#testing](https://daily.dev/tags/testing), [#cicd](https://daily.dev/tags/cicd)

[View this post on daily.dev](https://daily.dev/posts/playwright-1-64-shuffle-test-locks-and-breaking-changes-jxegkrkbp)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Playwright 1.64: Shuffle, Test Locks and Breaking Changes","url":"https://daily.dev/posts/playwright-1-64-shuffle-test-locks-and-breaking-changes-jxegkrkbp","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/playwright-1-64-shuffle-test-locks-and-breaking-changes-jxegkrkbp"},"datePublished":"2026-10-14T02:26:58.765Z","dateModified":"2026-10-14T03:38:13.281Z","description":"Playwright 1.64 adds a --shuffle flag to randomize test order and expose order-dependent tests, plus a lock option in test.describe.configure() to keep tests...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/696454484f678dcce2cbf679aced56b2?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/696454484f678dcce2cbf679aced56b2?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Currents","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Currents","logo":"https://media.daily.dev/image/upload/s--RxsiMZ1S--/f_auto,q_auto/v1788684994/logos/currents?_a=BAMAMicg0","url":"https://daily.dev/sources/currents"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/playwright-1-64-shuffle-test-locks-and-breaking-changes-jxegkrkbp","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"testing,cicd","timeRequired":"PT12M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Currents","item":"https://daily.dev/sources/currents"},{"@type":"ListItem","position":3,"name":"Playwright 1.64: Shuffle, Test Locks and Breaking Changes"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/playwright-1-64-shuffle-test-locks-and-breaking-changes-jxegkrkbp#faq","mainEntity":[{"@type":"Question","name":"What breaking changes does Playwright 1.64 introduce?","acceptedAnswer":{"@type":"Answer","text":"Playwright 1.64 introduces several breaking changes: elements inside a hidden iframe (e.g. visibility: hidden) now count as hidden for actions, locator.isVisible() and expect(locator).toBeVisible(); device descriptors like devices['Desktop Chrome'] now forward the screen property so window.screen and media queries see the emulated screen size; --update-snapshots=missing now passes the run instead of failing when only missing snapshots are created; and JSX in test files now follows tsconfig.json's jsx options, defaulting to the automatic runtime from react/jsx-runtime. Teams planning a Playwright upgrade can track breaking-change writeups like these through daily.dev."}},{"@type":"Question","name":"How do I prevent Playwright tests that share a live third-party account from running at the same time?","acceptedAnswer":{"@type":"Answer","text":"Use the new lock option in test.describe.configure() in Playwright 1.64, which applies a named lock to every test in the enclosing file or group, including nested groups. Tests sharing a lock name never run concurrently, while all other tests keep running in parallel; a test can hold several locks and starts only once all are free. This avoids making the whole suite serial just to protect a few shared-resource tests. Developers wiring up shared-resource test isolation can follow Playwright changes like this on daily.dev."}},{"@type":"Question","name":"Why did my Playwright --update-snapshots=missing run start passing instead of failing in version 1.64?","acceptedAnswer":{"@type":"Answer","text":"Starting in Playwright 1.64, tests that only create missing snapshots now pass under the 'missing' mode of testConfig.updateSnapshots, whereas before that run was red to signal a new baseline. The mode without this setting, now called 'default', still writes missing snapshots and fails the test as before. Pipelines relying on a red run to flag new baselines should add an explicit step that fails or commits when new snapshots are written. Anyone debugging visual-baseline CI behavior can track snapshot-mode changes like this via daily.dev."}}]}
```

