#!/usr/bin/env node process.env.NODE_ENV = 'test' const { resolve } = require('path') const { cpus } = require('os') const spawnAsync = require('@expo/spawn-async') const Listr = require('listr') const fixtures = [ 'children', 'custom-dirs', 'debug', 'deprecate', 'dynamic-routes', 'empty', 'error', 'module', 'ssr', 'with-config', // csr, // dev, // generate, // fail generate, // fallback generate, // ssr, // ssr csp, // spa 'basic' ] const nuxtBuild = resolve(__dirname, '../bin/nuxt-build') function buildFixture(name) { const rootDir = resolve(__dirname, '../test/fixtures', name) return spawnAsync('node', [nuxtBuild, rootDir]) } const tasks = [] for (let fixture of fixtures) { tasks.push({ title: 'Building fixtures ' + fixture, task: (ctx, task) => buildFixture(fixture) .then(() => { task.title = task.title.replace(/^Building/, 'Built') + ' Successfully' }) }) } const options = { renderer: process.env.CI === true ? 'silent' : 'default', nonTTYRenderer: 'silent', concurrent: Math.min(4, cpus().length) } new Listr([{ title: `Build ${fixtures.length} fixtures with concurrency of ${options.concurrent}`, task: () => new Listr(tasks, {concurrent: options.concurrent}) }], options) .run() .catch(console.error) // eslint-disable-line no-console .then(() => process.exit(0))