test: add setup for Vercel / Netlify tests (#7716)

Co-authored-by: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com>
This commit is contained in:
Erika 2023-07-21 21:24:36 +02:00 committed by GitHub
parent e5e5cc8e70
commit 471324b0a3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 397 additions and 19 deletions

55
.github/workflows/test-hosts.yml vendored Normal file
View file

@ -0,0 +1,55 @@
name: Hosted tests
on:
schedule:
- cron: '0 0 * * 0'
env:
ASTRO_TELEMETRY_DISABLED: true
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
VERCEL_ORG_ID: ${{ secrets.VERCEL_TEST_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_TEST_PROJECT_ID }}
VERCEL_TOKEN: ${{ secrets.VERCEL_TEST_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_TEST_SITE_ID }}
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_TEST_AUTH_TOKEN }}
FORCE_COLOR: true
jobs:
test:
name: Run tests
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Setup PNPM
uses: pnpm/action-setup@v2
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Install Hosts CLIs
run: pnpm install --global netlify-cli vercel
- name: Deploy Vercel
working-directory: ./packages/integrations/vercel/test/hosted/hosted-astro-project
run:
pnpm run build
vercel --prod --prebuilt
- name: Deploy Netlify
working-directory: ./packages/integrations/netlify/test/hosted/hosted-astro-project
run:
pnpm run build
netlify deploy --prod
- name: Test both hosts
run:
pnpm run test:e2e:hosts

1
.gitignore vendored
View file

@ -3,6 +3,7 @@ dist/
*.tsbuildinfo
.DS_Store
.vercel
.netlify
_site/
scripts/smoke/*-main/
scripts/memory/project/src/pages/

View file

@ -27,6 +27,7 @@
"test:vite-ci": "turbo run test --filter=astro",
"test:e2e": "cd packages/astro && pnpm playwright install && pnpm run test:e2e",
"test:e2e:match": "cd packages/astro && pnpm playwright install && pnpm run test:e2e:match",
"test:e2e:hosts": "turbo run test:hosted",
"benchmark": "astro-benchmark",
"lint": "eslint . --report-unused-disable-directives",
"version": "changeset version && node ./scripts/deps/update-example-versions.js && pnpm install --no-frozen-lockfile && pnpm run format",

View file

@ -34,7 +34,8 @@
"dev": "astro-scripts dev \"src/**/*.ts\"",
"test-fn": "mocha --exit --timeout 20000 --file \"./test/setup.js\" test/functions/",
"test-edge": "deno test --allow-run --allow-read --allow-net --allow-env --allow-write ./test/edge-functions/",
"test": "pnpm test-fn"
"test": "pnpm test-fn",
"test:hosted": "mocha --exit --timeout 30000 test/hosted"
},
"dependencies": {
"@astrojs/underscore-redirects": "^0.2.0",

View file

@ -0,0 +1,3 @@
The tests in this folder are done directly on a deployed Netlify website (hosted at https://curious-boba-495d6d.netlify.app) and are not run by the test suite. They instead run every week through a GitHub action.
The purpose of those tests is to make sure that everything works as expected while deployed. In a way, they're as E2E as it gets.

View file

@ -0,0 +1,11 @@
import netlify from '@astrojs/netlify';
import { defineConfig } from 'astro/config';
// https://astro.build/config
export default defineConfig({
output: 'server',
adapter: netlify(),
experimental: {
assets: true,
},
});

View file

@ -0,0 +1,12 @@
{
"name": "netlify-hosted-astro-project",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "astro build"
},
"dependencies": {
"@astrojs/netlify": "file:../../..",
"astro": "file:../../../../../astro"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 MiB

View file

@ -0,0 +1 @@
/// <reference types="astro/client-image" />

View file

@ -0,0 +1,6 @@
---
import { Image } from 'astro:assets';
import penguin from '../assets/penguin.png';
---
<Image src={penguin} width={300} alt="" />

View file

@ -0,0 +1,13 @@
import { expect } from 'chai';
const NETLIFY_TEST_URL = 'https://curious-boba-495d6d.netlify.app';
describe('Hosted Netlify Tests', () => {
it('Image endpoint works', async () => {
const image = await fetch(
NETLIFY_TEST_URL + '/_image?href=%2F_astro%2Fpenguin.e9c64733.png&w=300&f=webp'
);
expect(image.status).to.equal(200);
});
});

View file

@ -47,7 +47,8 @@
"build": "astro-scripts build \"src/**/*.ts\" && tsc",
"build:ci": "astro-scripts build \"src/**/*.ts\"",
"dev": "astro-scripts dev \"src/**/*.ts\"",
"test": "mocha --exit --timeout 20000 --file \"./test/setup.js\" test/"
"test": "mocha --exit --timeout 20000 --file \"./test/setup.js\" test/ --ignore test/hosted",
"test:hosted": "mocha --exit --timeout 30000 test/hosted"
},
"dependencies": {
"@astrojs/internal-helpers": "^0.1.1",

View file

@ -0,0 +1,3 @@
The tests in this folder are done directly on a deployed Vercel website (hosted at https://astro-vercel-image-test.vercel.app) and are not run by the test suite. They instead run every week through a GitHub action.
The purpose of those tests is to make sure that everything works as expected while deployed. In a way, they're as E2E as it gets.

View file

@ -0,0 +1,11 @@
import vercel from '@astrojs/vercel/serverless';
import { defineConfig } from 'astro/config';
// https://astro.build/config
export default defineConfig({
output: 'server',
adapter: vercel(),
experimental: {
assets: true,
},
});

View file

@ -0,0 +1,12 @@
{
"name": "vercel-hosted-astro-project",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "astro build"
},
"dependencies": {
"@astrojs/vercel": "file:../../..",
"astro": "file:../../../../../astro"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 MiB

View file

@ -0,0 +1 @@
/// <reference types="astro/client-image" />

View file

@ -0,0 +1,6 @@
---
import { Image } from 'astro:assets';
import penguin from '../assets/penguin.png';
---
<Image src={penguin} width={300} alt="" />

View file

@ -0,0 +1,13 @@
import { expect } from 'chai';
const VERCEL_TEST_URL = 'https://astro-vercel-image-test.vercel.app';
describe('Hosted Vercel Tests', () => {
it('Image endpoint works', async () => {
const image = await fetch(
VERCEL_TEST_URL + '/_image?href=%2F_astro%2Fpenguin.e9c64733.png&w=300&f=webp'
);
expect(image.status).to.equal(200);
});
});

View file

@ -4508,6 +4508,15 @@ importers:
specifier: workspace:*
version: link:../../../../../../astro
packages/integrations/netlify/test/hosted/hosted-astro-project:
dependencies:
'@astrojs/netlify':
specifier: file:../../..
version: file:packages/integrations/netlify(astro@2.8.5)
astro:
specifier: file:../../../../../astro
version: file:packages/astro(@types/node@18.16.18)
packages/integrations/node:
dependencies:
'@astrojs/webapi':
@ -5011,6 +5020,15 @@ importers:
specifier: workspace:*
version: link:../../../../../astro
packages/integrations/vercel/test/hosted/hosted-astro-project:
dependencies:
'@astrojs/vercel':
specifier: file:../../..
version: file:packages/integrations/vercel(astro@2.8.5)
astro:
specifier: file:../../../../../astro
version: file:packages/astro(@types/node@18.16.18)
packages/integrations/vue:
dependencies:
'@vitejs/plugin-vue':
@ -5545,6 +5563,10 @@ packages:
/@astrojs/compiler@1.6.0:
resolution: {integrity: sha512-vxuzp09jAW/ZQ8C4Itf6/OsF76TNjBQC06FNpcayKOzxYkCGHTLh7+0lF4ywmG/fDgSc+f1x7kKxxEKl4nqXvQ==}
/@astrojs/internal-helpers@0.1.1:
resolution: {integrity: sha512-+LySbvFbjv2nO2m/e78suleQOGEru4Cnx73VsZbrQgB2u7A4ddsQg3P2T0zC0e10jgcT+c6nNlKeLpa6nRhQIg==}
dev: false
/@astrojs/language-server@1.0.0:
resolution: {integrity: sha512-oEw7AwJmzjgy6HC9f5IdrphZ1GVgfV/+7xQuyf52cpTiRWd/tJISK3MsKP0cDkVlfodmNABNFnAaAWuLZEiiiA==}
hasBin: true
@ -5565,6 +5587,62 @@ packages:
vscode-uri: 3.0.7
dev: false
/@astrojs/markdown-remark@2.2.1(astro@2.8.5):
resolution: {integrity: sha512-VF0HRv4GpC1XEMLnsKf6jth7JSmlt9qpqP0josQgA2eSpCIAC/Et+y94mgdBIZVBYH/yFnMoIxgKVe93xfO2GA==}
peerDependencies:
astro: '*'
dependencies:
'@astrojs/prism': 2.1.2
astro: file:packages/astro(@types/node@18.16.18)
github-slugger: 1.5.0
import-meta-resolve: 2.2.2
rehype-raw: 6.1.1
rehype-stringify: 9.0.3
remark-gfm: 3.0.1
remark-parse: 10.0.2
remark-rehype: 10.1.0
remark-smartypants: 2.0.0
shiki: 0.14.1
unified: 10.1.2
unist-util-visit: 4.1.2
vfile: 5.3.7
transitivePeerDependencies:
- supports-color
dev: false
/@astrojs/prism@2.1.2:
resolution: {integrity: sha512-3antim1gb34689GHRQFJ88JEo93HuZKQBnmxDT5W/nxiNz1p/iRxnCTEhIbJhqMOTRbbo5h2ldm5qSxx+TMFQA==}
engines: {node: '>=16.12.0'}
dependencies:
prismjs: 1.29.0
dev: false
/@astrojs/telemetry@2.1.1:
resolution: {integrity: sha512-4pRhyeQr0MLB5PKYgkdu+YE8sSpMbHL8dUuslBWBIdgcYjtD1SufPMBI8pgXJ+xlwrQJHKKfK2X1KonHYuOS9A==}
engines: {node: '>=16.12.0'}
dependencies:
ci-info: 3.8.0
debug: 4.3.4
dlv: 1.1.3
dset: 3.1.2
is-docker: 3.0.0
is-wsl: 2.2.0
undici: 5.22.1
which-pm-runs: 1.1.0
transitivePeerDependencies:
- supports-color
dev: false
/@astrojs/underscore-redirects@0.2.0:
resolution: {integrity: sha512-TP+uEdqMGNC7Lyci6WmbHvvMElBDSyHlTsvGH9E9/2duvD/n4KJVyr59klycEroaZJiAi5tzlXL8Jsl9/R32gQ==}
dev: false
/@astrojs/webapi@2.2.0:
resolution: {integrity: sha512-mHAOApWyjqSe5AQMOUD9rsZJqbMQqe3Wosb1a40JV6Okvyxj1G6GTlthwYadWCymq/lbgwh0PLiY8Fr4eFxtuQ==}
dependencies:
undici: 5.22.1
dev: false
/@babel/code-frame@7.22.5:
resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
engines: {node: '>=6.9.0'}
@ -5663,7 +5741,7 @@ packages:
'@babel/helper-replace-supers': 7.21.5
'@babel/helper-skip-transparent-expression-wrappers': 7.20.0
'@babel/helper-split-export-declaration': 7.22.5
semver: 6.3.0
semver: 6.3.1
transitivePeerDependencies:
- supports-color
dev: false
@ -5680,7 +5758,7 @@ packages:
'@babel/core': 7.22.5
'@babel/helper-annotate-as-pure': 7.22.5
regexpu-core: 5.3.2
semver: 6.3.0
semver: 6.3.1
dev: false
/@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.22.5):
@ -5697,7 +5775,7 @@ packages:
debug: 4.3.4
lodash.debounce: 4.0.8
resolve: 1.22.2
semver: 6.3.0
semver: 6.3.1
transitivePeerDependencies:
- supports-color
dev: false
@ -7152,7 +7230,7 @@ packages:
resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==}
dependencies:
dataloader: 1.4.0
node-fetch: 2.6.11
node-fetch: 2.6.12
transitivePeerDependencies:
- encoding
dev: true
@ -7816,11 +7894,11 @@ packages:
detect-libc: 2.0.1
https-proxy-agent: 5.0.1
make-dir: 3.1.0
node-fetch: 2.6.11
node-fetch: 2.6.12
nopt: 5.0.0
npmlog: 5.0.1
rimraf: 3.0.2
semver: 7.5.3
semver: 7.5.4
tar: 6.1.15
transitivePeerDependencies:
- encoding
@ -8195,7 +8273,7 @@ packages:
'@octokit/request-error': 2.1.0
'@octokit/types': 6.41.0
is-plain-object: 5.0.0
node-fetch: 2.6.11
node-fetch: 2.6.12
universal-user-agent: 6.0.0
transitivePeerDependencies:
- encoding
@ -8997,7 +9075,7 @@ packages:
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.3
semver: 7.5.4
ts-api-utils: 1.0.1(typescript@5.0.2)
typescript: 5.0.2
transitivePeerDependencies:
@ -9018,7 +9096,7 @@ packages:
'@typescript-eslint/typescript-estree': 6.0.0(typescript@5.0.2)
eslint: 8.43.0
eslint-scope: 5.1.1
semver: 7.5.3
semver: 7.5.4
transitivePeerDependencies:
- supports-color
- typescript
@ -9660,7 +9738,7 @@ packages:
'@babel/compat-data': 7.22.5
'@babel/core': 7.22.5
'@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.22.5)
semver: 6.3.0
semver: 6.3.1
transitivePeerDependencies:
- supports-color
dev: false
@ -9868,7 +9946,7 @@ packages:
/builtins@5.0.1:
resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==}
dependencies:
semver: 7.5.3
semver: 7.5.4
dev: true
/bundle-name@3.0.0:
@ -10254,7 +10332,7 @@ packages:
js-string-escape: 1.0.1
lodash: 4.17.21
md5-hex: 3.0.1
semver: 7.5.3
semver: 7.5.4
well-known-symbols: 2.0.0
dev: false
@ -13351,7 +13429,7 @@ packages:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
engines: {node: '>=8'}
dependencies:
semver: 6.3.0
semver: 6.3.1
dev: false
/manage-path@2.0.0:
@ -14278,6 +14356,14 @@ packages:
typescript: 5.0.2
dev: false
/network-information-types@0.1.1(typescript@5.0.4):
resolution: {integrity: sha512-mLXNafJYOkiJB6IlF727YWssTRpXitR+tKSLyA5VAdBi3SOvLf5gtizHgxf241YHPWocnAO/fAhVrB/68tPHDw==}
peerDependencies:
typescript: '>= 3.0.0'
dependencies:
typescript: 5.0.4
dev: false
/nice-try@1.0.5:
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
dev: true
@ -14305,7 +14391,7 @@ packages:
resolution: {integrity: sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==}
engines: {node: '>=10'}
dependencies:
semver: 7.5.3
semver: 7.5.4
/node-addon-api@6.1.0:
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
@ -14319,8 +14405,8 @@ packages:
resolution: {integrity: sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ==}
dev: false
/node-fetch@2.6.11:
resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==}
/node-fetch@2.6.12:
resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==}
engines: {node: 4.x || >=6.0.0}
peerDependencies:
encoding: ^0.1.0
@ -14440,7 +14526,7 @@ packages:
dependencies:
execa: 6.1.0
parse-package-name: 1.0.0
semver: 7.5.3
semver: 7.5.4
validate-npm-package-name: 4.0.0
dev: true
@ -16111,6 +16197,11 @@ packages:
hasBin: true
dev: false
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
dev: false
/semver@7.5.2:
resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==}
engines: {node: '>=10'}
@ -16126,6 +16217,13 @@ packages:
dependencies:
lru-cache: 6.0.0
/semver@7.5.4:
resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
engines: {node: '>=10'}
hasBin: true
dependencies:
lru-cache: 6.0.0
/send@0.18.0:
resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
engines: {node: '>= 0.8.0'}
@ -17142,6 +17240,12 @@ packages:
engines: {node: '>=12.20'}
hasBin: true
/typescript@5.0.4:
resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==}
engines: {node: '>=12.20'}
hasBin: true
dev: false
/ufo@1.1.2:
resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==}
dev: false
@ -18283,6 +18387,87 @@ packages:
/zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
file:packages/astro(@types/node@18.16.18):
resolution: {directory: packages/astro, type: directory}
id: file:packages/astro
name: astro
version: 2.8.5
engines: {node: '>=16.12.0', npm: '>=6.14.0'}
hasBin: true
peerDependencies:
sharp: '>=0.31.0'
peerDependenciesMeta:
sharp:
optional: true
dependencies:
'@astrojs/compiler': 1.6.0
'@astrojs/internal-helpers': 0.1.1
'@astrojs/language-server': 1.0.0
'@astrojs/markdown-remark': 2.2.1(astro@2.8.5)
'@astrojs/telemetry': 2.1.1
'@astrojs/webapi': 2.2.0
'@babel/core': 7.22.5
'@babel/generator': 7.22.5
'@babel/parser': 7.22.5
'@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5)
'@babel/traverse': 7.22.5
'@babel/types': 7.22.5
'@types/babel__core': 7.20.1
'@types/dom-view-transitions': 1.0.1
'@types/yargs-parser': 21.0.0
acorn: 8.9.0
boxen: 6.2.1
chokidar: 3.5.3
ci-info: 3.8.0
common-ancestor-path: 1.0.1
cookie: 0.5.0
debug: 4.3.4
deepmerge-ts: 4.3.0
devalue: 4.3.2
diff: 5.1.0
es-module-lexer: 1.3.0
esbuild: 0.17.19
estree-walker: 3.0.0
execa: 6.1.0
fast-glob: 3.2.12
github-slugger: 2.0.0
gray-matter: 4.0.3
html-escaper: 3.0.3
js-yaml: 4.1.0
kleur: 4.1.5
magic-string: 0.27.0
mime: 3.0.0
network-information-types: 0.1.1(typescript@5.0.4)
ora: 6.3.1
p-limit: 4.0.0
path-to-regexp: 6.2.1
preferred-pm: 3.0.3
prompts: 2.4.2
rehype: 12.0.1
semver: 7.5.4
server-destroy: 1.0.1
shiki: 0.14.1
string-width: 5.1.2
strip-ansi: 7.1.0
tsconfig-resolver: 3.0.1
typescript: 5.0.4
unist-util-visit: 4.1.2
vfile: 5.3.7
vite: 4.3.9(@types/node@18.16.18)(sass@1.63.4)
vitefu: 0.2.4(vite@4.3.9)
which-pm: 2.0.0
yargs-parser: 21.1.1
zod: 3.20.6
transitivePeerDependencies:
- '@types/node'
- less
- sass
- stylus
- sugarss
- supports-color
- terser
dev: false
file:packages/astro/test/fixtures/astro-client-only/pkg:
resolution: {directory: packages/astro/test/fixtures/astro-client-only/pkg, type: directory}
name: '@test/astro-client-only-pkg'
@ -18313,3 +18498,41 @@ packages:
dependencies:
solid-js: 1.7.6
dev: false
file:packages/integrations/netlify(astro@2.8.5):
resolution: {directory: packages/integrations/netlify, type: directory}
id: file:packages/integrations/netlify
name: '@astrojs/netlify'
version: 2.5.0
peerDependencies:
astro: '*'
dependencies:
'@astrojs/underscore-redirects': 0.2.0
'@astrojs/webapi': 2.2.0
'@netlify/functions': 1.6.0
astro: file:packages/astro(@types/node@18.16.18)
esbuild: 0.15.18
dev: false
file:packages/integrations/vercel(astro@2.8.5):
resolution: {directory: packages/integrations/vercel, type: directory}
id: file:packages/integrations/vercel
name: '@astrojs/vercel'
version: 3.7.3
peerDependencies:
astro: '*'
dependencies:
'@astrojs/internal-helpers': 0.1.1
'@astrojs/webapi': 2.2.0
'@vercel/analytics': 0.1.11
'@vercel/nft': 0.22.6
astro: file:packages/astro(@types/node@18.16.18)
esbuild: 0.17.19
fast-glob: 3.2.12
set-cookie-parser: 2.6.0
web-vitals: 3.3.2
transitivePeerDependencies:
- encoding
- react
- supports-color
dev: false

View file

@ -38,6 +38,10 @@
"test": {
"env": ["RUNNER_OS", "NODE_VERSION"],
"outputMode": "new-only"
},
"test:hosted": {
"outputMode": "new-only",
"cache": false
}
}
}