Skip to content

Commit

Permalink
test(runner): add config tests for sequence.concurrent
Browse files Browse the repository at this point in the history
  • Loading branch information
dsyddall committed Oct 10, 2024
1 parent 2c6702d commit 74c5f1e
Show file tree
Hide file tree
Showing 6 changed files with 171 additions and 37 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { describe, expect, test, vi } from 'vitest'

const delay = (timeout: number) => new Promise(resolve => setTimeout(resolve, timeout))

let count = 0

describe.concurrent('concurrent suite', () => {
test('first test completes last', async ({ task }) => {
await delay(40)
expect(task.concurrent).toBeTruthy()
expect(++count).toBe(4)
})

test('second test completes third', async ({ task }) => {
await delay(30)
expect(task.concurrent).toBeTruthy()
expect(++count).toBe(3)
})
})

test.concurrent('third test completes second', async ({ task }) => {
await delay(20)
expect(task.concurrent).toBeTruthy()
expect(++count).toBe(2)
})

test.concurrent('last test completes first', async ({ task }) => {
await delay(10)
expect(task.concurrent).toBeTruthy()
expect(++count).toBe(1)
})
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { describe, expect, test, vi } from 'vitest'

const delay = (timeout: number) => new Promise(resolve => setTimeout(resolve, timeout))

let count = 0

describe('sequential suite', () => {
test('first test completes first', async ({ task }) => {
await delay(40)
expect(task.concurrent).toBeFalsy()
expect(++count).toBe(1)
})

test('second test completes second', async ({ task }) => {
await delay(30)
expect(task.concurrent).toBeFalsy()
expect(++count).toBe(2)
})
})

test('third test completes third', async ({ task }) => {
await delay(20)
expect(task.concurrent).toBeFalsy()
expect(++count).toBe(3)
})

test('last test completes last', async ({ task }) => {
await delay(10)
expect(task.concurrent).toBeFalsy()
expect(++count).toBe(4)
})
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { describe, expect, test, vi } from 'vitest'

const delay = (timeout: number) => new Promise(resolve => setTimeout(resolve, timeout))

let count = 0

describe('concurrent suite', () => {
test('first test completes last', async ({ task }) => {
await delay(40)
expect(task.concurrent).toBeTruthy()
expect(++count).toBe(4)
})

test('second test completes third', async ({ task }) => {
await delay(30)
expect(task.concurrent).toBeTruthy()
expect(++count).toBe(3)
})
})

test('third test completes second', async ({ task }) => {
await delay(20)
expect(task.concurrent).toBeTruthy()
expect(++count).toBe(2)
})

test('last test completes first', async ({ task }) => {
await delay(10)
expect(task.concurrent).toBeTruthy()
expect(++count).toBe(1)
})
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { describe, expect, test, vi } from 'vitest'

const delay = (timeout: number) => new Promise(resolve => setTimeout(resolve, timeout))

let count = 0

describe.sequential('sequential suite', () => {
test('first test completes first', async ({ task }) => {
await delay(40)
expect(task.concurrent).toBeFalsy()
expect(++count).toBe(1)
})

test('second test completes second', async ({ task }) => {
await delay(30)
expect(task.concurrent).toBeFalsy()
expect(++count).toBe(2)
})
})

test.sequential('third test completes third', async ({ task }) => {
await delay(20)
expect(task.concurrent).toBeFalsy()
expect(++count).toBe(3)
})

test.sequential('last test completes last', async ({ task }) => {
await delay(10)
expect(task.concurrent).toBeFalsy()
expect(++count).toBe(4)
})
47 changes: 47 additions & 0 deletions test/config/test/sequence-concurrent.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { expect, test } from 'vitest'

import { runVitest } from '../../test-utils'

test('should run suites and tests concurrently unless sequential specified when sequence.concurrent is true', async () => {
const { stderr, stdout } = await runVitest({
root: './fixtures/sequence-concurrent',
include: ['sequence-concurrent-true-*.test.ts'],
sequence: {
concurrent: true,
},
})

expect(stderr).toBe('')

expect(stdout).toContain('✓ sequence-concurrent-true-sequential.test.ts > sequential suite > first test completes first')
expect(stdout).toContain('✓ sequence-concurrent-true-sequential.test.ts > sequential suite > second test completes second')
expect(stdout).toContain('✓ sequence-concurrent-true-sequential.test.ts > third test completes third')
expect(stdout).toContain('✓ sequence-concurrent-true-sequential.test.ts > last test completes last')
expect(stdout).toContain('✓ sequence-concurrent-true-concurrent.test.ts > concurrent suite > first test completes last')
expect(stdout).toContain('✓ sequence-concurrent-true-concurrent.test.ts > concurrent suite > second test completes third')
expect(stdout).toContain('✓ sequence-concurrent-true-concurrent.test.ts > third test completes second')
expect(stdout).toContain('✓ sequence-concurrent-true-concurrent.test.ts > last test completes first')
expect(stdout).toContain('Test Files 2 passed (2)')
})

test('should run suites and tests sequentially unless concurrent specified when sequence.concurrent is false', async () => {
const { stderr, stdout } = await runVitest({
root: './fixtures/sequence-concurrent',
include: ['sequence-concurrent-false-*.test.ts'],
sequence: {
concurrent: false,
},
})

expect(stderr).toBe('')

expect(stdout).toContain('✓ sequence-concurrent-false-sequential.test.ts > sequential suite > first test completes first')
expect(stdout).toContain('✓ sequence-concurrent-false-sequential.test.ts > sequential suite > second test completes second')
expect(stdout).toContain('✓ sequence-concurrent-false-sequential.test.ts > third test completes third')
expect(stdout).toContain('✓ sequence-concurrent-false-sequential.test.ts > last test completes last')
expect(stdout).toContain('✓ sequence-concurrent-false-concurrent.test.ts > concurrent suite > first test completes last')
expect(stdout).toContain('✓ sequence-concurrent-false-concurrent.test.ts > concurrent suite > second test completes third')
expect(stdout).toContain('✓ sequence-concurrent-false-concurrent.test.ts > third test completes second')
expect(stdout).toContain('✓ sequence-concurrent-false-concurrent.test.ts > last test completes first')
expect(stdout).toContain('Test Files 2 passed (2)')
})
37 changes: 0 additions & 37 deletions test/core/test/sequential-sequence-concurrent.test.ts

This file was deleted.

0 comments on commit 74c5f1e

Please sign in to comment.