Skip to content

Commit

Permalink
test: single preview
Browse files Browse the repository at this point in the history
  • Loading branch information
AriPerkkio committed Aug 12, 2024
1 parent a1c73aa commit 9f80711
Showing 1 changed file with 34 additions and 8 deletions.
42 changes: 34 additions & 8 deletions packages/runtime/src/store/previews.spec.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,51 @@
import { assert, expect, test, vi } from 'vitest';
import { assert, expect, test } from 'vitest';
import { PreviewsStore } from './previews.js';
import type { PortListener, WebContainer } from '@webcontainer/api';

test('marks multiple preview infos ready', async () => {
test("preview is set ready on webcontainer's event", async () => {
const { store, emit } = await getStore();
store.setPreviews([3000]);

assert(store.previews.value);
expect(store.previews.value[0].ready).toBe(false);

emit(3000, 'open', 'https://localhost');

expect(store.previews.value![0].ready).toBe(true);
});

test('preview is not set ready when different port is ready', async () => {
const { store, emit } = await getStore();
store.setPreviews([3000]);

assert(store.previews.value);
expect(store.previews.value[0].ready).toBe(false);

emit(3001, 'open', 'https://localhost');

expect(store.previews.value[0].ready).toBe(false);
});

test('marks multiple preview infos ready', async () => {
const { store, emit } = await getStore();
store.setPreviews([
{ port: 3000, title: 'Dev' },
{ port: 3000, title: 'Docs', pathname: '/docs' },
]);

assert(store.previews.value);
expect(store.previews.value).toHaveLength(2);
expect(store.previews.value![0].ready).toBe(false);
expect(store.previews.value![1].ready).toBe(false);

expect(store.previews.value[0].ready).toBe(false);
expect(store.previews.value[0].pathname).toBe(undefined);

expect(store.previews.value[1].ready).toBe(false);
expect(store.previews.value[1].pathname).toBe('/docs');

emit(3000, 'open', 'https://localhost');

await vi.waitFor(() => {
expect(store.previews.value![0].ready).toBe(true);
expect(store.previews.value![1].ready).toBe(true);
});
expect(store.previews.value[0].ready).toBe(true);
expect(store.previews.value[1].ready).toBe(true);
});

async function getStore() {
Expand Down

0 comments on commit 9f80711

Please sign in to comment.