| import { nextTestSetup } from 'e2e-utils' | |
| import execa from 'execa' | |
| import stripAnsi from 'strip-ansi' | |
| describe('lockfile', () => { | |
| const { next, isTurbopack, isRspack } = nextTestSetup({ | |
| files: __dirname, | |
| }) | |
| it('only allows a single instance of `next dev` to run at a time', async () => { | |
| const browser = await next.browser('/') | |
| expect(await browser.elementByCss('p').text()).toBe('Page') | |
| const { stdout, stderr, exitCode } = await execa( | |
| 'pnpm', | |
| [ | |
| 'next', | |
| 'dev', | |
| ...(isRspack ? [] : [isTurbopack ? '--turbopack' : '--webpack']), | |
| ], | |
| { | |
| cwd: next.testDir, | |
| env: next.env as NodeJS.ProcessEnv, | |
| reject: false, | |
| } | |
| ) | |
| expect(stripAnsi(stdout + stderr)).toContain('Unable to acquire lock') | |
| expect(exitCode).toBe(1) | |
| // make sure the other instance of `next dev` didn't mess anything up | |
| browser.refresh() | |
| expect(await browser.elementByCss('p').text()).toBe('Page') | |
| }) | |
| }) | |