diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9d6b797..70905d7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,32 +13,29 @@ concurrency: jobs: build-and-deploy: + # timeout-minutes: 60 runs-on: ubuntu-latest steps: - - name: Checkout + - name: 拉取代码 uses: actions/checkout@v4 - - - run: | + - name: 修改 .npmrc + run: | sed -i '/use-node-version/d' .npmrc; sed -i '/node-mirror/d' .npmrc; - - - uses: pnpm/action-setup@v4 - name: Install pnpm + - name: 安装 pnpm + uses: pnpm/action-setup@v4 with: version: 9 run_install: false - - - name: Install Node.js + - name: 安装 Node.js uses: actions/setup-node@v4 with: - node-version: 20 + node-version: lts/* cache: 'pnpm' - - - name: Install dependencies + - name: 安装依赖 run: pnpm install --frozen-lockfile - - - name: Lint + - name: 静态代码分析 run: pnpm lint # - name: Build @@ -47,10 +44,7 @@ jobs: # VITE_BUILD_COMMIT: ${{ github.sha }} # https://github.com/vercel/examples/tree/main/ci-cd/github-actions - # cname-china.vercel-dns.com - # cname-cn.vercel.com - # - name: Install Vercel CLI - # run: npm install --global vercel@canary + # cname-cn.vercel.com cname-china.vercel-dns.com - name: Pull Vercel Environment Information run: pnpm exec vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} - name: Build Project Artifacts @@ -60,31 +54,23 @@ jobs: - name: Deploy Project Artifacts to Vercel run: pnpm exec vercel deploy --prebuilt --target=production --token=${{ secrets.VERCEL_TOKEN }} - # https://github.com/Tencent/tdesign-vue-next/pull/1604#issuecomment-1236244550 - name: Surge + id: surge_deploy # pnpm exec surge token / pnpx surge token + # https://github.com/Tencent/tdesign-vue-next/pull/1604#issuecomment-1236244550 + # https://github.com/Tencent/tdesign/blob/0c0c9b63897c05d10c58e1a1e36feda2cb99eca7/.github/workflows/preview.yml#L40 run: | + repository=${{github.repository}} + project_name=${repository#*/} + export DEPLOY_DOMAIN=https://preview-pr${{ github.run_number }}-vue-ts-example.surge.sh cp dist/index.html dist/200.html - pnpm exec surge dist https://vue-ts-example.surge.sh --token ${{ secrets.SURGE_TOKEN }} + pnpm exec surge --project ./dist --domain $DEPLOY_DOMAIN --token ${{ secrets.SURGE_TOKEN }} + echo the preview URL is $DEPLOY_DOMAIN + echo "url=$DEPLOY_DOMAIN" >> $GITHUB_OUTPUT - # test: - # needs: build-and-deploy - # timeout-minutes: 60 - # runs-on: ubuntu-latest - # steps: - # - uses: actions/checkout@v4 - # - uses: actions/setup-node@v4 - # with: - # node-version: lts/* - # - name: Install dependencies - # run: npm install -g pnpm && pnpm install - name: Install Playwright Browsers run: pnpm exec playwright install --with-deps - name: Run Playwright tests run: pnpm exec playwright test - # - uses: actions/upload-artifact@v4 - # if: ${{ !cancelled() }} - # with: - # name: playwright-report - # path: playwright-report/ - # retention-days: 30 + env: + BASE_URL: ${{ steps.surge_deploy.outputs.url }} diff --git a/.npmrc b/.npmrc index f178a53..6089e60 100644 --- a/.npmrc +++ b/.npmrc @@ -3,7 +3,7 @@ registry=https://registry.npmjs.org/ registry=https://r-npm.oo1.dev # https://pnpm.io/zh/npmrc#node-mirrorltreleasedir -use-node-version=20.17.0 +#use-node-version=20.17.0 node-mirror:release=https://npmmirror.com/mirrors/node/ node-mirror:rc=https://npmmirror.com/mirrors/node-rc/ node-mirror:nightly=https://npmmirror.com/mirrors/node-nightly/ diff --git a/playwright.config.ts b/playwright.config.ts index f4d97eb..6ff59ac 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -12,7 +12,7 @@ import { defineConfig, devices } from '@playwright/test'; * See https://playwright.dev/docs/test-configuration. */ export default defineConfig({ - testDir: './tests', + testDir: './tests/e2e', /* Run tests in files in parallel */ fullyParallel: true, /* Fail the build on CI if you accidentally left test.only in the source code. */ @@ -26,7 +26,7 @@ export default defineConfig({ /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { /* Base URL to use in actions like `await page.goto('/')`. */ - baseURL: process.env.BASE_URL || 'https://vue-ts-example.oo1.dev', + baseURL: process.env.BASE_URL || 'https://vue-ts-example.surge.sh', /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ trace: 'on-first-retry', diff --git a/tests/test-1.spec.ts b/tests/e2e/test-1.spec.ts similarity index 88% rename from tests/test-1.spec.ts rename to tests/e2e/test-1.spec.ts index 2f87504..d5f218d 100644 --- a/tests/test-1.spec.ts +++ b/tests/e2e/test-1.spec.ts @@ -2,5 +2,6 @@ import { test, expect } from '@playwright/test'; test('test', async ({ page }) => { await page.goto('/'); + console.log(page.url()); await expect(page.getByRole('link', { name: '中文-页面.page.vue' })).toBeVisible(); });