summaryrefslogtreecommitdiff
path: root/packages/integrations/vercel/test/static-assets.test.js
diff options
context:
space:
mode:
authorGravatar Hee <lee111dae11@gmail.com> 2023-08-02 08:06:50 +0900
committerGravatar GitHub <noreply@github.com> 2023-08-01 18:06:50 -0500
commit560d0dab1cc7510e5d01f38955c13b329ebf66ff (patch)
tree91adbc008005b8904e3135d32e592f88e27ffa2d /packages/integrations/vercel/test/static-assets.test.js
parent4dd6c7900ca40db1b2cebed9bd02a9eb00874d8d (diff)
downloadastro-560d0dab1cc7510e5d01f38955c13b329ebf66ff.tar.gz
astro-560d0dab1cc7510e5d01f38955c13b329ebf66ff.tar.zst
astro-560d0dab1cc7510e5d01f38955c13b329ebf66ff.zip
feat: add cache headers to assets in Vercel adapter (#7729)
* feat: cache assets in Vercel adapter * Update tidy-tips-doubt.md * chore: update lockfile * Update packages/integrations/vercel/test/static-assets.test.js * Update packages/integrations/vercel/test/static-assets.test.js * Update packages/integrations/vercel/test/static-assets.test.js * chore: update split test --------- Co-authored-by: Kid <44045911+kidonng@users.noreply.github.com> Co-authored-by: Nate Moore <nate@astro.build> Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
Diffstat (limited to 'packages/integrations/vercel/test/static-assets.test.js')
-rw-r--r--packages/integrations/vercel/test/static-assets.test.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/packages/integrations/vercel/test/static-assets.test.js b/packages/integrations/vercel/test/static-assets.test.js
new file mode 100644
index 000000000..b2bb4542f
--- /dev/null
+++ b/packages/integrations/vercel/test/static-assets.test.js
@@ -0,0 +1,84 @@
+import { expect } from 'chai';
+import { loadFixture } from './test-utils.js';
+
+describe('Static Assets', () => {
+ /** @type {import('../../../astro/test/test-utils.js').Fixture} */
+ let fixture;
+
+ const VALID_CACHE_CONTROL = 'public, max-age=31536000, immutable';
+
+ async function build({ adapter, assets }) {
+ fixture = await loadFixture({
+ root: './fixtures/static-assets/',
+ adapter,
+ build: {
+ assets,
+ }
+ });
+ await fixture.build();
+ }
+
+ async function getConfig() {
+ const json = await fixture.readFile('../.vercel/output/config.json');
+ const config = JSON.parse(json);
+
+ return config;
+ }
+
+ async function getAssets() {
+ return fixture.config.build.assets;
+ }
+
+ async function checkValidCacheControl(assets) {
+ const config = await getConfig();
+
+ const route = config.routes.find((r) => r.src === `^/${assets ?? getAssets()}/(.*)$`);
+ expect(route.headers['cache-control']).to.equal(VALID_CACHE_CONTROL);
+ expect(route.continue).to.equal(true);
+ }
+
+ describe('static adapter', async () => {
+ const adapter = await import('@astrojs/vercel/static');
+
+ it('has cache control', async () => {
+ await build({ adapter });
+ checkValidCacheControl();
+ });
+
+ it('has cache control other assets', async () => {
+ const assets = '_foo';
+ await build({ adapter, assets });
+ checkValidCacheControl(assets);
+ });
+ });
+
+ describe('serverless adapter', async () => {
+ const adapter = await import('@astrojs/vercel/serverless');
+
+ it('has cache control', async () => {
+ await build({ adapter });
+ checkValidCacheControl();
+ });
+
+ it('has cache control other assets', async () => {
+ const assets = '_foo';
+ await build({ adapter, assets });
+ checkValidCacheControl(assets);
+ });
+ });
+
+ describe('edge adapter', async () => {
+ const adapter = await import('@astrojs/vercel/edge');
+
+ it('has cache control', async () => {
+ await build({ adapter });
+ checkValidCacheControl();
+ });
+
+ it('has cache control other assets', async () => {
+ const assets = '_foo';
+ await build({ adapter, assets });
+ checkValidCacheControl(assets);
+ });
+ });
+});