429f991bde
Project CI / AI game creator shell Rust shard 2/4 (push) Failing after 19s
Project CI / AI game creator shell Rust shard 3/4 (push) Failing after 20s
Project CI / AI game creator shell Rust shard 1/4 (push) Failing after 20s
Project CI / AI game creator shell Rust shard 4/4 (push) Failing after 20s
Project CI / Backend tests (push) Failing after 17s
Project CI / AI game creator shell Rust crates (push) Failing after 17s
Project CI / AI game creator shell Rust smoke (push) Failing after 19s
Project CI / Native shell tests (push) Failing after 18s
Project CI / Frontend tests (push) Failing after 8s
Project CI / AI game creator shell web tests (push) Failing after 15s
Project CI / Repository checks (push) Failing after 17s
- 撤销 39aed2e48 夹带的游戏分发前后端、SpacetimeDB 绑定、主站路由、后台审核页、文档与 nginx 改动,master 恢复可编译状态
- 保留该提交自身的 AGC 发号改动:agc-global-version.mjs 与其参数构造单测
- 恢复被误删的 output 产物,避免把无关清理混进该提交
- 补回两篇技术文档在 docs/README.md 的索引(它们属于后续两个补提交文档,不属于游戏分发)
- 游戏分发完整实现保留在 codex/game-distribution 分支继续开发
61 lines
2.0 KiB
TypeScript
61 lines
2.0 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import viteConfig from '../../vite.config';
|
|
|
|
describe('vite dev api proxy', () => {
|
|
it('forwards the profile main route to the Rust API server', async () => {
|
|
const resolvedConfig =
|
|
typeof viteConfig === 'function'
|
|
? await viteConfig({ command: 'serve', mode: 'test' })
|
|
: viteConfig;
|
|
|
|
// 中文注释:`/api/profile/*` 是“我的”和“存档”页面的主链路由;
|
|
// 本地 Vite 若漏配代理,会把请求回退到 index.html,前端再按 JSON 解析就会报 `Unexpected token '<'`。
|
|
expect(resolvedConfig.server?.proxy).toEqual(
|
|
expect.objectContaining({
|
|
'/api/profile': expect.objectContaining({
|
|
target: expect.any(String),
|
|
changeOrigin: true,
|
|
secure: false,
|
|
}),
|
|
}),
|
|
);
|
|
});
|
|
|
|
it('forwards the public creation entry config route to the Rust API server', async () => {
|
|
const resolvedConfig =
|
|
typeof viteConfig === 'function'
|
|
? await viteConfig({ command: 'serve', mode: 'test' })
|
|
: viteConfig;
|
|
|
|
// 中文注释:创作入口配置是底部加号入口的首屏事实源,漏配代理会回退 index.html。
|
|
expect(resolvedConfig.server?.proxy).toEqual(
|
|
expect.objectContaining({
|
|
'/api/creation-entry': expect.objectContaining({
|
|
target: expect.any(String),
|
|
changeOrigin: true,
|
|
secure: false,
|
|
}),
|
|
}),
|
|
);
|
|
});
|
|
|
|
it('forwards the admin route to the admin dev server', async () => {
|
|
const resolvedConfig =
|
|
typeof viteConfig === 'function'
|
|
? await viteConfig({ command: 'serve', mode: 'test' })
|
|
: viteConfig;
|
|
|
|
// 中文注释:本地完整栈需要能从主站 `/admin/` 进入后台,贴近生产同域部署形态。
|
|
expect(resolvedConfig.server?.proxy).toEqual(
|
|
expect.objectContaining({
|
|
'/admin/': expect.objectContaining({
|
|
target: expect.stringContaining(':3102'),
|
|
changeOrigin: true,
|
|
secure: false,
|
|
}),
|
|
}),
|
|
);
|
|
});
|
|
});
|