diff options
Diffstat (limited to 'test/snowpack-integration.test.js')
-rw-r--r-- | test/snowpack-integration.test.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/test/snowpack-integration.test.js b/test/snowpack-integration.test.js new file mode 100644 index 000000000..d2a75075e --- /dev/null +++ b/test/snowpack-integration.test.js @@ -0,0 +1,73 @@ +import { suite } from 'uvu'; +import * as assert from 'uvu/assert'; +import { createRuntime } from '../lib/runtime.js'; +import { promises as fsPromises } from 'fs'; +import { relative as pathRelative } from 'path'; +import { doc } from './test-utils.js'; + +const { readdir, stat } = fsPromises; + +const SnowpackDev = suite('snowpack.dev'); + +let runtime; + +SnowpackDev.before(async () => { + const astroConfig = { + projectRoot: new URL('../examples/snowpack/', import.meta.url), + hmxRoot: new URL('../examples/snowpack/astro/', import.meta.url), + dist: './_site' + }; + + const logging = { + level: 'error', + dest: process.stderr + }; + + runtime = await createRuntime(astroConfig, logging); +}); + +SnowpackDev.after(async () => { + await runtime.shutdown(); +}); + +async function* allPageFiles(root) { + for (const filename of await readdir(root)) { + const fullpath = new URL(filename, root); + const info = await stat(fullpath); + + if (info.isDirectory()) { + yield* allPageFiles(new URL(fullpath + '/')); + } else { + yield fullpath; + } + } +} + +async function* allPages(root) { + for await(let fileURL of allPageFiles(root)) { + let bare = fileURL.pathname + .replace(/\.(hmx|md)$/, '') + .replace(/index$/, '') + + yield '/' + pathRelative(root.pathname, bare); + } +} + +SnowpackDev.skip('Can load every page', async () => { + const failed = []; + + const pageRoot = new URL('../examples/snowpack/astro/pages/', import.meta.url); + for await(let pathname of allPages(pageRoot)) { + const result = await runtime.load(pathname); + if(result.statusCode === 500) { + failed.push(result); + continue; + } + assert.equal(result.statusCode, 200, `Loading ${pathname}`); + } + + assert.equal(failed.length, 0, 'Failed pages'); + console.log(failed); +}); + +SnowpackDev.run();
\ No newline at end of file |