1008932-unsupported-file-type-i18n.spec.ts 2.23 KB
import { test, expect } from "@playwright/test";

/**
 * 缺陷 1008932 - 这个提醒,不知道是什么意思
 *
 * 根因:zh-CN.ts 缺少 KnowledgeBase.unsupportedFileType 翻译 key,
 * 上传不支持的文件类型(如 .csv)时,通知显示原始 key 名
 * "users_20260319.csv: KnowledgeBase.unsupportedFileType: .csv"
 * 而非中文 "不支持的文件类型: .csv"。
 *
 * 验收标准:
 * 1. zh-CN.ts 中 KnowledgeBase.unsupportedFileType 存在且值为中文
 * 2. zh-CN.ts 中 KnowledgeBase.fileHasNoExtension 存在且值为中文
 */
test.describe("不支持文件类型提示 i18n 修复 (#1008932)", () => {
  test("zh-CN.ts 包含 KnowledgeBase.unsupportedFileType 中文翻译", async ({
    page,
  }) => {
    await page.goto("/#/app/workspace");
    await page.waitForLoadState("domcontentloaded");

    // 通过注入脚本验证 i18n 翻译值
    const translation = await page.evaluate(() => {
      const i18n = (window as any).__vue_i18n__;
      if (!i18n) return null;
      try {
        return i18n.global.t("KnowledgeBase.unsupportedFileType");
      } catch {
        return null;
      }
    });

    // 如果无法通过 vue-i18n 实例验证,则跳过(需登录态)
    if (translation === null) {
      test.skip(true, "无法访问 vue-i18n 实例,跳过(需登录态)");
      return;
    }

    // 翻译值不应为原始 key
    expect(translation).not.toBe("KnowledgeBase.unsupportedFileType");
    // 翻译值应包含中文
    expect(translation).toMatch(/[\u4e00-\u9fa5]/);
  });

  test("zh-CN.ts 包含 KnowledgeBase.fileHasNoExtension 中文翻译", async ({
    page,
  }) => {
    await page.goto("/#/app/workspace");
    await page.waitForLoadState("domcontentloaded");

    const translation = await page.evaluate(() => {
      const i18n = (window as any).__vue_i18n__;
      if (!i18n) return null;
      try {
        return i18n.global.t("KnowledgeBase.fileHasNoExtension");
      } catch {
        return null;
      }
    });

    if (translation === null) {
      test.skip(true, "无法访问 vue-i18n 实例,跳过(需登录态)");
      return;
    }

    expect(translation).not.toBe("KnowledgeBase.fileHasNoExtension");
    expect(translation).toMatch(/[\u4e00-\u9fa5]/);
  });
});