|
| 1 | +/* eslint-disable jest/expect-expect */ |
| 2 | +import supertest from 'supertest'; |
| 3 | +import puppeteer from 'puppeteer'; |
| 4 | +import projectInitializer from '../utils/project-initializer.js'; |
| 5 | +import projectStop from '../utils/project-stop.js'; |
| 6 | +import { getContainerPort } from '../utils/docker-env-actions.js'; |
| 7 | + |
| 8 | +// timeout in minutes |
| 9 | +const TIMEOUT = 10 * 60 * 1000; |
| 10 | + |
| 11 | +let serverPort; |
| 12 | +let localhostBaseUrl; |
| 13 | +const EXAMPLE_PATH = '/examples/svelte-static'; |
| 14 | + |
| 15 | +describe('E2E - svelte-static project', () => { |
| 16 | + let request; |
| 17 | + let browser; |
| 18 | + let page; |
| 19 | + |
| 20 | + beforeAll(async () => { |
| 21 | + serverPort = getContainerPort(); |
| 22 | + localhostBaseUrl = `http://0.0.0.0:${serverPort}`; |
| 23 | + |
| 24 | + request = supertest(localhostBaseUrl); |
| 25 | + |
| 26 | + await projectInitializer(EXAMPLE_PATH, 'svelte', 'deliver', serverPort); |
| 27 | + |
| 28 | + browser = await puppeteer.launch({ headless: 'new' }); |
| 29 | + page = await browser.newPage(); |
| 30 | + }, TIMEOUT); |
| 31 | + |
| 32 | + afterAll(async () => { |
| 33 | + await projectStop(serverPort, EXAMPLE_PATH.replace('/examples/', '')); |
| 34 | + |
| 35 | + await browser.close(); |
| 36 | + }, TIMEOUT); |
| 37 | + |
| 38 | + test('Should render home page in "/" route', async () => { |
| 39 | + await page.goto(`${localhostBaseUrl}/`, { |
| 40 | + waitUntil: 'domcontentloaded', |
| 41 | + }); |
| 42 | + await page.waitForSelector('h1'); |
| 43 | + const pageContent = await page.content(); |
| 44 | + |
| 45 | + expect(pageContent).toContain('Welcome to SvelteKit'); |
| 46 | + expect(pageContent).toContain('kit.svelte.dev'); |
| 47 | + }); |
| 48 | + |
| 49 | + test('Should return correct asset', async () => { |
| 50 | + await request |
| 51 | + .get('/favicon.png') |
| 52 | + .expect(200) |
| 53 | + .expect('Content-Type', /image\/png/); |
| 54 | + }); |
| 55 | +}); |
0 commit comments