Skip to content

Commit

Permalink
test: fix --no-threads issues in examples
Browse files Browse the repository at this point in the history
  • Loading branch information
sheremet-va committed May 8, 2022
1 parent 7e83241 commit 8e29fd3
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 89 deletions.
4 changes: 2 additions & 2 deletions examples/react-storybook/src/App.test.tsx
Expand Up @@ -26,12 +26,12 @@ it('renders with data', async () => {
}),
).toBeInTheDocument()

posts.forEach(async (post) => {
for (const post of posts) {
expect(
await screen.findByRole('heading', { name: post.title, level: 2 }),
).toBeDefined()
expect(screen.getByText(post.body)).toBeDefined()
})
}
})

it('handles errors', async () => {
Expand Down
8 changes: 7 additions & 1 deletion examples/svelte/test/basic.test.ts
@@ -1,8 +1,14 @@
import { tick } from 'svelte'
import Hello from '../components/Hello.svelte'

let host: HTMLElement

afterEach(() => {
host.remove()
})

test('mount component', async () => {
const host = document.createElement('div')
host = document.createElement('div')
host.setAttribute('id', 'host')
document.body.appendChild(host)
const instance = new Hello({ target: host, props: { count: 4 } })
Expand Down
4 changes: 4 additions & 0 deletions examples/vitesse/vite.config.ts
Expand Up @@ -21,6 +21,10 @@ export default defineConfig({
dts: 'src/components.d.ts',
}),
],
resolve: {
// TODO actually, if @vue/test-utils provided "exports" field, this wouldn't be needed
mainFields: ['module'],
},
test: {
globals: true,
environment: 'happy-dom',
Expand Down
93 changes: 50 additions & 43 deletions test/core/test/dom.test.ts
@@ -1,8 +1,16 @@
/**
* @vitest-environment jsdom
*/

/* eslint-disable vars-on-top */

import { expect, it, vi } from 'vitest'

declare global {
// eslint-disable-next-line no-var
var __property_jsdom: unknown
}

it('jsdom', () => {
expect(window).toBeDefined()

Expand All @@ -29,84 +37,83 @@ it('defined on self/window are defined on global', () => {
expect(self).toBeDefined()
expect(window).toBeDefined()

expect(self.__property).not.toBeDefined()
expect(window.__property).not.toBeDefined()
expect(globalThis.__property).not.toBeDefined()
expect(self.__property_jsdom).not.toBeDefined()
expect(window.__property_jsdom).not.toBeDefined()
expect(globalThis.__property_jsdom).not.toBeDefined()

globalThis.__property = 'defined_value'
globalThis.__property_jsdom = 'defined_value'

expect(__property).toBe('defined_value')
expect(self.__property).toBe('defined_value')
expect(window.__property).toBe('defined_value')
expect(globalThis.__property).toBe('defined_value')
expect(__property_jsdom).toBe('defined_value')
expect(self.__property_jsdom).toBe('defined_value')
expect(window.__property_jsdom).toBe('defined_value')
expect(globalThis.__property_jsdom).toBe('defined_value')

self.__property = 'test_value'
self.__property_jsdom = 'test_value'

expect(__property).toBe('test_value')
expect(self.__property).toBe('test_value')
expect(window.__property).toBe('test_value')
expect(globalThis.__property).toBe('test_value')
expect(__property_jsdom).toBe('test_value')
expect(self.__property_jsdom).toBe('test_value')
expect(window.__property_jsdom).toBe('test_value')
expect(globalThis.__property_jsdom).toBe('test_value')

window.__property = 'new_value'
window.__property_jsdom = 'new_value'

expect(__property).toBe('new_value')
expect(self.__property).toBe('new_value')
expect(window.__property).toBe('new_value')
expect(globalThis.__property).toBe('new_value')
expect(__property_jsdom).toBe('new_value')
expect(self.__property_jsdom).toBe('new_value')
expect(window.__property_jsdom).toBe('new_value')
expect(globalThis.__property_jsdom).toBe('new_value')

globalThis.__property = 'global_value'
globalThis.__property_jsdom = 'global_value'

expect(__property).toBe('global_value')
expect(self.__property).toBe('global_value')
expect(window.__property).toBe('global_value')
expect(globalThis.__property).toBe('global_value')
expect(__property_jsdom).toBe('global_value')
expect(self.__property_jsdom).toBe('global_value')
expect(window.__property_jsdom).toBe('global_value')
expect(globalThis.__property_jsdom).toBe('global_value')

const obj = {}

self.__property = obj
self.__property_jsdom = obj

expect(self.__property).toBe(obj)
expect(window.__property).toBe(obj)
expect(globalThis.__property).toBe(obj)
expect(self.__property_jsdom).toBe(obj)
expect(window.__property_jsdom).toBe(obj)
expect(globalThis.__property_jsdom).toBe(obj)
})

it('usage with defineProperty', () => {
Object.defineProperty(self, '__property', {
Object.defineProperty(self, '__property_jsdom', {
get: () => 'self_property',
configurable: true,
})

expect(__property).toBe('self_property')
expect(self.__property).toBe('self_property')
expect(globalThis.__property).toBe('self_property')
expect(window.__property).toBe('self_property')
expect(__property_jsdom).toBe('self_property')
expect(self.__property_jsdom).toBe('self_property')
expect(globalThis.__property_jsdom).toBe('self_property')
expect(window.__property_jsdom).toBe('self_property')

Object.defineProperty(window, '__property', {
Object.defineProperty(window, '__property_jsdom', {
get: () => 'window_property',
configurable: true,
})

expect(__property).toBe('window_property')
expect(self.__property).toBe('window_property')
expect(globalThis.__property).toBe('window_property')
expect(window.__property).toBe('window_property')
expect(__property_jsdom).toBe('window_property')
expect(self.__property_jsdom).toBe('window_property')
expect(globalThis.__property_jsdom).toBe('window_property')
expect(window.__property_jsdom).toBe('window_property')

Object.defineProperty(globalThis, '__property', {
Object.defineProperty(globalThis, '__property_jsdom', {
get: () => 'global_property',
configurable: true,
})

expect(__property).toBe('global_property')
expect(self.__property).toBe('global_property')
expect(globalThis.__property).toBe('global_property')
expect(window.__property).toBe('global_property')
expect(__property_jsdom).toBe('global_property')
expect(self.__property_jsdom).toBe('global_property')
expect(globalThis.__property_jsdom).toBe('global_property')
expect(window.__property_jsdom).toBe('global_property')
})

it('can call global functions without window works as expected', async () => {
const noop = vi.fn()

expect(() => addEventListener('abort', noop)).not.toThrow()
expect(() => scrollTo()).not.toThrow()
expect(() => requestAnimationFrame(noop)).not.toThrow()
expect(() => window.requestAnimationFrame(noop)).not.toThrow()
expect(() => self.requestAnimationFrame(noop)).not.toThrow()
Expand Down
86 changes: 43 additions & 43 deletions test/core/test/happy-dom.test.ts
Expand Up @@ -8,84 +8,84 @@ import { expect, it, vi } from 'vitest'

declare global {
// eslint-disable-next-line no-var
var __property: unknown
var __property_dom: unknown
}

it('defined on self/window are defined on global', () => {
expect(self).toBeDefined()
expect(window).toBeDefined()

expect(self.__property).not.toBeDefined()
expect(window.__property).not.toBeDefined()
expect(globalThis.__property).not.toBeDefined()
expect(self.__property_dom).not.toBeDefined()
expect(window.__property_dom).not.toBeDefined()
expect(globalThis.__property_dom).not.toBeDefined()

globalThis.__property = 'defined_value'
globalThis.__property_dom = 'defined_value'

expect(__property).toBe('defined_value')
expect(self.__property).toBe('defined_value')
expect(window.__property).toBe('defined_value')
expect(globalThis.__property).toBe('defined_value')
expect(__property_dom).toBe('defined_value')
expect(self.__property_dom).toBe('defined_value')
expect(window.__property_dom).toBe('defined_value')
expect(globalThis.__property_dom).toBe('defined_value')

self.__property = 'test_value'
self.__property_dom = 'test_value'

expect(__property).toBe('test_value')
expect(self.__property).toBe('test_value')
expect(window.__property).toBe('test_value')
expect(globalThis.__property).toBe('test_value')
expect(__property_dom).toBe('test_value')
expect(self.__property_dom).toBe('test_value')
expect(window.__property_dom).toBe('test_value')
expect(globalThis.__property_dom).toBe('test_value')

window.__property = 'new_value'
window.__property_dom = 'new_value'

expect(__property).toBe('new_value')
expect(self.__property).toBe('new_value')
expect(window.__property).toBe('new_value')
expect(globalThis.__property).toBe('new_value')
expect(__property_dom).toBe('new_value')
expect(self.__property_dom).toBe('new_value')
expect(window.__property_dom).toBe('new_value')
expect(globalThis.__property_dom).toBe('new_value')

globalThis.__property = 'global_value'
globalThis.__property_dom = 'global_value'

expect(__property).toBe('global_value')
expect(self.__property).toBe('global_value')
expect(window.__property).toBe('global_value')
expect(globalThis.__property).toBe('global_value')
expect(__property_dom).toBe('global_value')
expect(self.__property_dom).toBe('global_value')
expect(window.__property_dom).toBe('global_value')
expect(globalThis.__property_dom).toBe('global_value')

const obj = {}

self.__property = obj
self.__property_dom = obj

expect(self.__property).toBe(obj)
expect(window.__property).toBe(obj)
expect(globalThis.__property).toBe(obj)
expect(self.__property_dom).toBe(obj)
expect(window.__property_dom).toBe(obj)
expect(globalThis.__property_dom).toBe(obj)
})

it('usage with defineProperty', () => {
Object.defineProperty(self, '__property', {
Object.defineProperty(self, '__property_dom', {
get: () => 'self_property',
configurable: true,
})

expect(__property).toBe('self_property')
expect(self.__property).toBe('self_property')
expect(globalThis.__property).toBe('self_property')
expect(window.__property).toBe('self_property')
expect(__property_dom).toBe('self_property')
expect(self.__property_dom).toBe('self_property')
expect(globalThis.__property_dom).toBe('self_property')
expect(window.__property_dom).toBe('self_property')

Object.defineProperty(window, '__property', {
Object.defineProperty(window, '__property_dom', {
get: () => 'window_property',
configurable: true,
})

expect(__property).toBe('window_property')
expect(self.__property).toBe('window_property')
expect(globalThis.__property).toBe('window_property')
expect(window.__property).toBe('window_property')
expect(__property_dom).toBe('window_property')
expect(self.__property_dom).toBe('window_property')
expect(globalThis.__property_dom).toBe('window_property')
expect(window.__property_dom).toBe('window_property')

Object.defineProperty(globalThis, '__property', {
Object.defineProperty(globalThis, '__property_dom', {
get: () => 'global_property',
configurable: true,
})

expect(__property).toBe('global_property')
expect(self.__property).toBe('global_property')
expect(globalThis.__property).toBe('global_property')
expect(window.__property).toBe('global_property')
expect(__property_dom).toBe('global_property')
expect(self.__property_dom).toBe('global_property')
expect(globalThis.__property_dom).toBe('global_property')
expect(window.__property_dom).toBe('global_property')
})

it('can call global functions without window works as expected', async () => {
Expand Down

0 comments on commit 8e29fd3

Please sign in to comment.