astro/packages/astro/test/public-base-404.test.js
2022-07-21 17:39:31 +00:00

64 lines
1.8 KiB
JavaScript

import { expect } from 'chai';
import * as cheerio from 'cheerio';
import { loadFixture } from './test-utils.js';
describe('Public dev with base', () => {
/** @type {import('./test-utils').Fixture} */
let fixture;
/** @type {import('./test-utils').DevServer} */
let devServer;
let $;
before(async () => {
fixture = await loadFixture({
root: './fixtures/public-base-404/',
site: 'http://example.com/',
base: '/blog',
});
devServer = await fixture.startDevServer();
});
it('200 when loading /@vite/client', async () => {
const response = await fixture.fetch('/@vite/client', {
redirect: 'manual',
});
expect(response.status).to.equal(200);
const content = await response.text();
expect(content).to.contain('vite');
});
it('200 when loading /blog/twitter.png', async () => {
const response = await fixture.fetch('/blog/twitter.png', {
redirect: 'manual',
});
expect(response.status).to.equal(200);
});
it('custom 404 page when loading /blog/blog/', async () => {
const response = await fixture.fetch('/blog/blog/');
const html = await response.text();
$ = cheerio.load(html);
expect($('h1').text()).to.equal('404');
});
it('default 404 hint page when loading /', async () => {
const response = await fixture.fetch('/');
expect(response.status).to.equal(404);
const html = await response.text();
$ = cheerio.load(html);
expect($('a').first().text()).to.equal('/blog/');
});
it('default 404 page when loading /none/', async () => {
const response = await fixture.fetch('/none/', {
headers: {
accept: 'text/html,*/*',
},
});
expect(response.status).to.equal(404);
const html = await response.text();
$ = cheerio.load(html);
expect($('h1').text()).to.equal('404: Not found');
expect($('pre').text()).to.equal('Path: /none/');
});
});