Repository: nocobase/nocobase
Pull request #6441: feat(Vditor): support s3 pro
Author: login: zhangzhonghe
Created: 2025-03-12T16:13:05Z | Merged: 2025-03-26T06:32:16Z

<!--
First of all, thank you for your contribution! 
For bug fixes or other non-feature modifications, please base your branch on the main branch.
For new features or API modifications, please make sure your branch is based on the next branch. 
Thank you!
-->

### This is a ...
- [x] New feature
- [ ] Improvement
- [ ] Bug fix
- [ ] Others

### Changelog

| Language   | Changelog |
| ---------- | --------- |
| 🇺🇸 English |       Vditor supports S3 Pro    |
| 🇨🇳 Chinese |      Vditor 支持 S3 Pro     |

### Related PR
https://github.com/nocobase/plugin-file-storage-s3-pro/pull/13

### Checklists
- [x] All changes have been self-tested and work as expected
- [ ] Test cases are updated/provided or not needed
- [x] Doc is updated/provided or not needed
- [x] Component demo is updated/provided or not needed
- [x] Changelog is provided or not needed
- [x] Request a code review if it is necessary



Diff:
diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx
index 51adb9b37b749..4791f92a1381b 100644
--- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx
+++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx
@@ -7,10 +7,12 @@
  * For more information, please refer to: https://www.nocobase.com/agreement.
  */
 
-import { useAPIClient, useApp, withDynamicSchemaProps } from '@nocobase/client';
+import { useAPIClient, useCompile, usePlugin, withDynamicSchemaProps } from '@nocobase/client';
 import React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
+import { useTranslation } from 'react-i18next';
 import Vditor from 'vditor';
 import { defaultToolbar } from '../interfaces/markdown-vditor';
+import { NAMESPACE } from '../locale';
 import { useCDN } from './const';
 import useStyle from './style';
 
@@ -24,11 +26,15 @@ export const Edit = withDynamicSchemaProps((props) => {
   const vdFullscreen = useRef(false);
   const containerRef = useRef<HTMLDivElement>(null);
   const containerParentRef = useRef<HTMLDivElement>(null);
-  const app = useApp();
   const apiClient = useAPIClient();
   const cdn = useCDN();
   const { wrapSSR, hashId, componentCls: containerClassName } = useStyle();
   const locale = apiClient.auth.locale || 'en-US';
+  const fileManagerPlugin: any = usePlugin('@nocobase/plugin-file-manager');
+  const compile = useCompile();
+  const compileRef = useRef(compile);
+  compileRef.current = compile;
+  const { t } = useTranslation();
 
   const lang: any = useMemo(() => {
     const currentLang = locale.replace(/-/g, '_');
@@ -41,7 +47,6 @@ export const Edit = withDynamicSchemaProps((props) => {
   useEffect(() => {
     if (!containerRef.current) return;
 
-    const uploadFileCollection = fileCollection || 'attachments';
     const toolbarConfig = toolbar ?? defaultToolbar;
 
     const vditor = new Vditor(containerRef.current, {
@@ -68,24 +73,63 @@ export const Edit = withDynamicSchemaProps((props) => {
         onChange(value);
       },
       upload: {
-        url: app.getApiUrl(`${uploadFileCollection}:create`),
-        headers: apiClient.getHeaders(),
         multiple: false,
         fieldName: 'file',
-        max: 1024 * 1024 * 1024, // 1G
-        format(files, responseText) {
-          const response = JSON.parse(responseText);
-          const formatResponse = {
-            msg: '',
-            code: 0,
-            data: {
-              errFiles: [],
-              succMap: {
-                [response.data.filename]: response.data.url,
-              },
-            },
-          };
-          return JSON.stringify(formatResponse);
+        async handler(files: File[]) {
+          const file = files[0];
+
+          // Need to ensure focus is in the current input box before uploading
+          vditor.focus();
+
+          const { data: checkData } = await apiClient.resource('vditor').check({
+            fileCollectionName: fileCollection,
+          });
+
+          if (!checkData?.data?.isSupportToUploadFiles) {
+            vditor.tip(
+              t('vditor.uploadError.message', { ns: NAMESPACE, storageTitle: checkData.data.storage?.title }),
+              0,
+            );
+            return;
+          }
+
+          vditor.tip(t('uploading'), 0);
+          const { data, errorMessage } = await fileManagerPlugin.uploadFile({
+            file,
+            fileCollectionName: fileCollection,
+            storageId: checkData?.data?.storage?.id,
+            storageType: checkData?.data?.storage?.type,
+            storageRules: checkData?.data?.storage?.rules,
+          });
+
+          if (errorMessage) {
+            vditor.tip(compileRef.current(errorMessage), 3000);
+            return;
+          }
+
+          if (!data) {
+            vditor.tip(t('Response data is empty', { ns: NAMESPACE }), 3000);
+            return;
+          }
+
+          const fileName = data.filename;
+          const fileUrl = data.url;
+
+          // Check if the uploaded file is an image
+          const isImage = file.type.startsWith('image/');
+
+          if (isImage) {
+            // Insert as an image - will be displayed in the editor
+            vditor.insertValue(`![${fileName}](${fileUrl})`);
+          } else {
+            // For non-image files, insert as a download link
+            vditor.insertValue(`[${fileName}](${fileUrl})`);
+          }
+
+          // hide the tip
+          vditor.tip(t(''), 10);
+
+          return null;
         },
       },
     });
@@ -94,7 +138,8 @@ export const Edit = withDynamicSchemaProps((props) => {
       vdRef.current?.destroy();
       vdRef.current = undefined;
     };
-  }, [fileCollection, toolbar?.join(',')]);
+    // eslint-disable-next-line react-hooks/exhaustive-deps
+  }, [toolbar?.join(',')]);
 
   useEffect(() => {
     if (editorReady && vdRef.current) {
@@ -155,7 +200,7 @@ export const Edit = withDynamicSchemaProps((props) => {
 
   return wrapSSR(
     <div ref={containerParentRef} className={`${hashId} ${containerClassName}`}>
-      <div id={hashId} ref={containerRef}></div>
+      <div ref={containerRef}></div>
     </div>,
   );
 });
diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/interfaces/markdown-vditor.tsx b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/interfaces/markdown-vditor.tsx
index b5b8b54b7e718..608ca0ed08c06 100644
--- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/interfaces/markdown-vditor.tsx
+++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/interfaces/markdown-vditor.tsx
@@ -7,9 +7,9 @@
  * For more information, please refer to: https://www.nocobase.com/agreement.
  */
 
+import { ISchema } from '@formily/react';
 import { CollectionFieldInterface, interfacesProperties } from '@nocobase/client';
 import { generateNTemplate } from '../locale';
-import { ISchema } from '@formily/react';
 
 const { defaultProps, operators } = interfacesProperties;
 
@@ -58,7 +58,9 @@ export class MarkdownVditorFieldInterface extends CollectionFieldInterface {
       'x-reactions': {
         fulfill: {
           schema: {
-            description: generateNTemplate('Used to store files uploaded in the Markdown editor'),
+            description: generateNTemplate(
+              'Used to store files uploaded in the Markdown editor (default: attachments)',
+            ),
           },
         },
       },
diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/locale/index.ts b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/locale/index.ts
index 5c461f7c06087..e2f3cbb485aa0 100644
--- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/locale/index.ts
+++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/locale/index.ts
@@ -9,7 +9,7 @@
 
 import { tval } from '@nocobase/utils/client';
 
-const NAMESPACE = 'field-markdown-vditor';
+export const NAMESPACE = 'field-markdown-vditor';
 
 export function generateNTemplate(key: string) {
   return tval(key, { ns: NAMESPACE })
diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/de-DE.json b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/de-DE.json
index ba814c438772d..4b25ad4cd2d19 100644
--- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/de-DE.json
+++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/de-DE.json
@@ -1,7 +1,7 @@
 {
   "Vditor": "Markdown(Vditor)",
   "File collection": "Dateisammlung",
-  "Used to store files uploaded in the Markdown editor": "Wird verwendet, um Dateien zu speichern, die im Markdown-Editor hochgeladen wurden",
+  "Used to store files uploaded in the Markdown editor (default: attachments)": "Dateisammlung, die in den Markdown-Editor hochgeladen wurde (Standard: attachments)",
   "Toolbar": "Editor-Symbolleistenkonfiguration",
   "Emoji": "Emoji",
   "Headings": "Überschriften",
@@ -29,5 +29,10 @@
   "Both": "Editor & Vorschau",
   "Preview": "Vorschau",
   "Fullscreen": "Vollbild umschalten",
-  "Outline": "Gliederung"
+  "Outline": "Gliederung",
+  "uploading": "Hochladen...",
+  "upload failed": "Hochladen fehlgeschlagen",
+  "vditor.uploadError.message": "Dateien können nicht in den aktuellen Speicher hochgeladen werden. Sie versuchen, Dateien in den Markdown-Editor hochzuladen, aber die aktuelle Speicher-Konfiguration unterstützt diese Operation nicht. Um die Upload-Funktionalität zu aktivieren, schließen Sie bitte die folgenden Einstellungen ab: 1. Gehen Sie zu \"Dateimanager\". 2. Wählen Sie den aktuell verwendeten Speicher ({{storageTitle}}) aus. 3. Legen Sie die \"Basis-URL\" fest und aktivieren Sie die Option \"Öffentlicher Zugriff\".",
+  "Storage configuration not found. Please configure a storage provider first.": "Speicherkonfiguration nicht gefunden. Bitte konfigurieren Sie zuerst einen Speicheranbieter.",
+  "Response data is empty": "Antwortdaten sind leer"
 }
diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/en-US.json b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/en-US.json
index 2c718740696ac..98743a02e22ad 100644
--- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/en-US.json
+++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/en-US.json
@@ -1,7 +1,7 @@
 {
   "Vditor": "Markdown(Vditor)",
   "File collection": "File collection",
-  "Used to store files uploaded in the Markdown editor": "Used to store files uploaded in the Markdown editor",
+  "Used to store files uploaded in the Markdown editor (default: attachments)": "Used to store files uploaded in the Markdown editor (default: attachments)",
   "Toolbar": "Editor toolbar configuration",
   "Emoji": "Emoji",
   "Headings": "Headings",
@@ -29,5 +29,10 @@
   "Both": "Editor & Preview",
   "Preview": "Preview",
   "Fullscreen": "Toggle Fullscreen",
-  "Outline": "Outline"
-}
\ No newline at end of file
+  "Outline": "Outline",
+  "uploading": "Uploading...",
+  "upload failed": "upload failed",
+  "vditor.uploadError.message": "Unable to upload files to the current storage. You are trying to upload files to the Markdown editor, but the current storage configuration does not support this operation. To enable upload functionality, please complete the following settings: 1. Go to \"File Manager\". 2. Select the storage currently in use ({{storageTitle}}). 3. Set \"Base URL\" and enable the \"Public access\" option.",
+  "Storage configuration not found. Please configure a storage provider first.": "Storage configuration not found. Please configure a storage provider first.",
+  "Response data is empty": "Response data is empty"
+}
diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/it-IT.json b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/it-IT.json
index e9cb61630a397..19ae1799787bc 100644
--- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/it-IT.json
+++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/it-IT.json
@@ -1,7 +1,7 @@
-{
+ {
   "Vditor": "Markdown(Vditor)",
   "File collection": "Raccolta file",
-  "Used to store files uploaded in the Markdown editor": "Utilizzato per archiviare i file caricati nell'editor Markdown",
+  "Used to store files uploaded in the Markdown editor (default: attachments)": "Utilizzato per archiviare i file caricati nell'editor Markdown (default: attachments)",
   "Toolbar": "Configurazione barra degli strumenti dell'editor",
   "Emoji": "Emoji",
   "Headings": "Intestazioni",
@@ -29,5 +29,10 @@
   "Both": "Editor e Anteprima",
   "Preview": "Anteprima",
   "Fullscreen": "Attiva/disattiva schermo intero",
-  "Outline": "Struttura"
+  "Outline": "Struttura",
+  "uploading": "Uploading...",
+  "upload failed": "upload failed",
+  "vditor.uploadError.message": "Impossibile caricare file nello storage corrente. Stai tentando di caricare file nell'editor Markdown, ma la configurazione di archiviazione corrente non supporta questa operazione. Per abilitare la funzionalità di caricamento, completa le seguenti impostazioni: 1. Vai a \"Gestione file\". 2. Seleziona lo storage attualmente in uso ({{storageTitle}}). 3. Imposta \"URL di base\" e abilita l'opzione \"Accesso pubblico\".",
+  "Storage configuration not found. Please configure a storage provider first.": "Configurazione dello storage non trovata. Configura prima un provider di storage.",
+  "Response data is empty": "I dati di risposta sono vuoti"
 }
diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ja-JP.json b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ja-JP.json
index e41532b670589..cec3dc563b515 100644
--- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ja-JP.json
+++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ja-JP.json
@@ -1,7 +1,7 @@
 {
   "Vditor": "Markdown(Vditor)",
   "File collection": "ファイルコレクション",
-  "Used to store files uploaded in the Markdown editor": "Markdownエディタでアップロードされたファイルを保存するために使用",
+  "Used to store files uploaded in the Markdown editor (default: attachments)": "Markdownエディタでアップロードされたファイルを保存するために使用 (デフォルト: attachments)",
   "Toolbar": "ツールバー",
   "Emoji": "絵文字",
   "Headings": "見出し",
@@ -29,5 +29,10 @@
   "Both": "編集とプレビュー",
   "Preview": "プレビュー",
   "Fullscreen": "全画面表示の切り替え",
-  "Outline": "アウトライン"
-}
\ No newline at end of file
+  "Outline": "アウトライン",
+  "uploading": "Uploading...",
+  "upload failed": "upload failed",
+  "vditor.uploadError.message": "現在のストレージにファイルをアップロードできません。Markdownエディタにファイルをアップロードしようとしていますが、現在のストレージ設定ではこの操作はサポートされていません。アップロード機能を有効にするには、次の設定を完了してください：1.「ファイルマネージャー」に移動します。2.現在使用しているストレージ（{{storageTitle}}）を選択します。3.「ベースURL」を設定し、「パブリックアクセス」オプションを有効にします。",
+  "Storage configuration not found. Please configure a storage provider first.": "ストレージ構成が見つかりません。最初にストレージプロバイダーを構成してください。",
+  "Response data is empty": "応答データが空です"
+}
diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ko-KR.json b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ko-KR.json
index ebae584d9966a..8d3ce5628ff3f 100644
--- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ko-KR.json
+++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ko-KR.json
@@ -1,7 +1,7 @@
 {
   "Vditor": "Markdown(Vditor)",
   "File collection": "파일 데이터 테이블",
-  "Used to store files uploaded in the Markdown editor": "Markdown 편집기에 업로드된 파일을 저장하는 데 사용됩니다",
+  "Used to store files uploaded in the Markdown editor (default: attachments)": "Markdown 편집기에 업로드된 파일을 저장하는 데 사용됩니다 (default: attachments)",
   "Toolbar": "편집기 도구 모음 구성",
   "Emoji": "이모지",
   "Headings": "제목크기",
@@ -29,5 +29,10 @@
   "Both": "에디터 & 미리보기",
   "Preview": "미리보기",
   "Fullscreen": "전체화면",
-  "Outline": "개요"
-}
\ No newline at end of file
+  "Outline": "개요",
+  "uploading": "Uploading...",
+  "upload failed": "upload failed",
+  "vditor.uploadError.message": "현재 스토리지에 파일을 업로드할 수 없습니다. Markdown 편집기에 파일을 업로드하려고 하지만 현재 스토리지 구성에서는 이 작업을 지원하지 않습니다. 업로드 기능을 활성화하려면 다음 설정을 완료하십시오: 1. \"파일 관리\"로 이동합니다. 2. 현재 사용 중인 스토리지({{storageTitle}})를 선택합니다. 3. \"기본 URL\"을 설정하고 \"공개 액세스\" 옵션을 활성화합니다.",
+  "Storage configuration not found. Please configure a storage provider first.": "저장소 구성을 찾을 수 없습니다. 먼저 저장소 공급자를 구성하십시오.",
+  "Response data is empty": "응답 데이터가 비어 있습니다"
+}
diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/zh-CN.json b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/zh-CN.json
index d2bc2eb6b16e0..93d23cc85937b 100644
--- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/zh-CN.json
+++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/zh-CN.json
@@ -1,7 +1,7 @@
 {
   "Vditor": "Markdown(Vditor)",
   "File collection": "文件数据表",
-  "Used to store files uploaded in the Markdown editor": "用于存储在Markdown编辑器中上传的文件",
+  "Used to store files uploaded in the Markdown editor (default: attachments)": "用于存储在Markdown编辑器中上传的文件 (默认: attachments)",
   "Toolbar": "编辑器工具栏配置",
   "Emoji": "表情",
   "Headings": "标题",
@@ -29,5 +29,10 @@
   "Both": "编辑 & 预览",
   "Preview": "预览",
   "Fullscreen": "全屏切换",
-  "Outline": "大纲"
-}
\ No newline at end of file
+  "Outline": "大纲",
+  "uploading": "上传中...",
+  "upload failed": "上传失败",
+  "vditor.uploadError.message": "无法上传文件到当前存储。您正在尝试上传文件到 Markdown 编辑器，但当前的存储配置不支持此操作。要启用上传功能，请完成以下设置：1. 前往「文件管理器」。2. 选择当前正在使用的存储（{{storageTitle}}）。3. 设置「基础 URL」并启用「公开访问」选项。",
+  "Storage configuration not found. Please configure a storage provider first.": "存储配置未找到。请先配置存储提供程序。",
+  "Response data is empty": "接口返回的数据为空"
+}
diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/__tests__/vditor-check.test.ts b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/__tests__/vditor-check.test.ts
new file mode 100644
index 0000000000000..b5ed87ad9317b
--- /dev/null
+++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/__tests__/vditor-check.test.ts
@@ -0,0 +1,282 @@
+/**
+ * This file is part of the NocoBase (R) project.
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
+ * Authors: NocoBase Team.
+ *
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
+ * For more information, please refer to: https://www.nocobase.com/agreement.
+ */
+
+import { mockServer } from '@nocobase/test';
+import { afterEach, beforeEach, describe, expect, it } from 'vitest';
+
+describe('vditor:check', () => {
+  let app;
+  let db;
+  let agent;
+
+  beforeEach(async () => {
+    app = mockServer({
+      cors: {
+        origin: '*',
+      },
+      plugins: ['field-sort', 'users', 'auth', 'file-manager', 'field-markdown-vditor'],
+    });
+
+    await app.load();
+
+    db = app.db;
+    agent = app.agent();
+
+    // 确保集合已同步
+    await db.sync();
+
+    // 清除数据并准备测试数据
+    await db.clean({ drop: true });
+
+    // 确保集合重新同步
+    await db.sync();
+
+    // 创建测试所需的存储和文件集合
+    await db.getRepository('storages').create({
+      values: {
+        name: 'default-storage',
+        type: 'local',
+        default: true,
+      },
+    });
+
+    await db.getRepository('storages').create({
+      values: {
+        name: 's3-storage',
+        type: 's3-compatible',
+        default: false,
+      },
+    });
+
+    await db.getRepository('storages').create({
+      values: {
+        name: 's3-storage-with-baseurl',
+        type: 's3-compatible',
+        default: false,
+        options: {
+          baseUrl: 'https://example.com',
+          public: true,
+        },
+      },
+    });
+
+    // 创建测试文件集合
+    await db.collection({
+      name: 'file-collection-default',
+      fields: [
+        {
+          type: 'string',
+          name: 'title',
+        },
+      ],
+    });
+
+    await db.collection({
+      name: 'file-collection-s3',
+      fields: [
+        {
+          type: 'string',
+          name: 'title',
+        },
+      ],
+      storage: 's3-storage',
+    });
+
+    await db.collection({
+      name: 'file-collection-s3-with-baseurl',
+      fields: [
+        {
+          type: 'string',
+          name: 'title',
+        },
+      ],
+      storage: 's3-storage-with-baseurl',
+    });
+
+    await db.sync();
+  });
+
+  afterEach(async () => {
+    await app.destroy();
+  });
+
+  it('should return default storage when no fileCollectionName provided', async () => {
+    const response = await agent.resource('vditor').check();
+
+    expect(response.status).toBe(200);
+    expect(response.body.data.isSupportToUploadFiles).toBe(true);
+    expect(response.body.data.storage).toMatchInlineSnapshot(`
+      {
+        "id": 1,
+        "name": "default-storage",
+        "rules": {},
+        "title": null,
+        "type": "local",
+      }
+    `);
+  });
+
+  it('should return default storage when fileCollectionName without storage is provided', async () => {
+    const response = await agent.resource('vditor').check({
+      fileCollectionName: 'file-collection-default',
+    });
+
+    expect(response.status).toBe(200);
+    expect(response.body.data.isSupportToUploadFiles).toBe(true);
+    expect(response.body.data.storage).toMatchInlineSnapshot(`
+      {
+        "id": 1,
+        "name": "default-storage",
+        "rules": {},
+        "title": null,
+        "type": "local",
+      }
+    `);
+  });
+
+  it('should return s3 storage and not support upload when s3 collection without baseUrl is provided', async () => {
+    const response = await agent.resource('vditor').check({
+      fileCollectionName: 'file-collection-s3',
+    });
+
+    expect(response.status).toBe(200);
+    expect(response.body.data.isSupportToUploadFiles).toBe(false);
+    expect(response.body.data.storage).toMatchInlineSnapshot(`
+      {
+        "id": 2,
+        "name": "s3-storage",
+        "rules": {},
+        "title": null,
+        "type": "s3-compatible",
+      }
+    `);
+  });
+
+  it('should return s3 storage and support upload when s3 collection with baseUrl is provided', async () => {
+    const response = await agent.resource('vditor').check({
+      fileCollectionName: 'file-collection-s3-with-baseurl',
+    });
+
+    expect(response.status).toBe(200);
+    expect(response.body.data.isSupportToUploadFiles).toBe(true);
+    expect(response.body.data.storage).toMatchInlineSnapshot(`
+      {
+        "id": 3,
+        "name": "s3-storage-with-baseurl",
+        "rules": {},
+        "title": null,
+        "type": "s3-compatible",
+      }
+    `);
+  });
+
+  it('should handle non-existent fileCollectionName gracefully', async () => {
+    const response = await agent.resource('vditor').check({
+      fileCollectionName: 'non-existent-collection',
+    });
+
+    expect(response.status).toBe(200);
+    expect(response.body.data.isSupportToUploadFiles).toBe(true);
+    expect(response.body.data.storage).toMatchInlineSnapshot(`
+      {
+        "id": 1,
+        "name": "default-storage",
+        "rules": {},
+        "title": null,
+        "type": "local",
+      }
+    `);
+  });
+
+  it('should handle s3 storage with baseUrl but not public attribute', async () => {
+    // 创建测试所需的非公开 s3 存储
+    await db.getRepository('storages').create({
+      values: {
+        name: 's3-storage-with-baseurl-not-public',
+        type: 's3-compatible',
+        default: false,
+        options: {
+          baseUrl: 'https://example.com',
+          public: false,
+        },
+      },
+    });
+
+    // 创建关联的文件集合
+    await db.collection({
+      name: 'file-collection-s3-baseurl-not-public',
+      fields: [
+        {
+          type: 'string',
+          name: 'title',
+        },
+      ],
+      storage: 's3-storage-with-baseurl-not-public',
+    });
+
+    await db.sync();
+
+    const response = await agent.resource('vditor').check({
+      fileCollectionName: 'file-collection-s3-baseurl-not-public',
+    });
+
+    expect(response.status).toBe(200);
+    expect(response.body.data.isSupportToUploadFiles).toBe(false);
+    expect(response.body.data.storage).toMatchInlineSnapshot(`
+      {
+        "id": 4,
+        "name": "s3-storage-with-baseurl-not-public",
+        "rules": {},
+        "title": null,
+        "type": "s3-compatible",
+      }
+    `);
+  });
+
+  it('should handle non-s3 storage types correctly', async () => {
+    // 创建一个非 s3 类型的存储
+    await db.getRepository('storages').create({
+      values: {
+        name: 'other-storage-type',
+        type: 'oss',
+        default: false,
+      },
+    });
+
+    // 创建关联的文件集合
+    await db.collection({
+      name: 'file-collection-oss',
+      fields: [
+        {
+          type: 'string',
+          name: 'title',
+        },
+      ],
+      storage: 'other-storage-type',
+    });
+
+    await db.sync();
+
+    const response = await agent.resource('vditor').check({
+      fileCollectionName: 'file-collection-oss',
+    });
+
+    expect(response.status).toBe(200);
+    expect(response.body.data.isSupportToUploadFiles).toBe(true);
+    expect(response.body.data.storage).toMatchInlineSnapshot(`
+      {
+        "id": 4,
+        "name": "other-storage-type",
+        "rules": {},
+        "title": null,
+        "type": "oss",
+      }
+    `);
+  });
+});
diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/plugin.ts b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/plugin.ts
index 2338e56f90d4e..53cbba69212a8 100644
--- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/plugin.ts
+++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/plugin.ts
@@ -11,6 +11,11 @@ import { Plugin } from '@nocobase/server';
 import fs from 'fs-extra';
 import path from 'path';
 
+// @ts-ignore
+import pkg from '../../package.json';
+
+const namespace = pkg.name;
+
 export class PluginFieldMarkdownVditorServer extends Plugin {
   async afterAdd() {}
 
@@ -18,6 +23,63 @@ export class PluginFieldMarkdownVditorServer extends Plugin {
 
   async load() {
     await this.copyVditorDist();
+    this.setResource();
+    this.app.acl.allow('vditor', 'check', 'loggedIn');
+  }
+
+  setResource() {
+    this.app.resourceManager.define({
+      name: 'vditor',
+      actions: {
+        check: async (context, next) => {
+          const { fileCollectionName } = context.action.params;
+          let storage;
+
+          const fileCollection = this.db.getCollection(fileCollectionName || 'attachments');
+          const storageName = fileCollection?.options?.storage;
+          if (storageName) {
+            storage = await this.db.getRepository('storages').findOne({
+              where: {
+                name: storageName,
+              },
+            });
+          } else {
+            storage = await this.db.getRepository('storages').findOne({
+              where: {
+                default: true,
+              },
+            });
+          }
+
+          if (!storage) {
+            context.throw(
+              400,
+              context.t('Storage configuration not found. Please configure a storage provider first.', {
+                ns: namespace,
+              }),
+            );
+          }
+
+          const isSupportToUploadFiles =
+            storage.type !== 's3-compatible' || (storage.options?.baseUrl && storage.options?.public);
+
+          const storageInfo = {
+            id: storage.id,
+            title: storage.title,
+            name: storage.name,
+            type: storage.type,
+            rules: storage.rules,
+          };
+
+          context.body = {
+            isSupportToUploadFiles: !!isSupportToUploadFiles,
+            storage: storageInfo,
+          };
+
+          await next();
+        },
+      },
+    });
   }
 
   async copyVditorDist() {
diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts b/packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts
index 75a1d27071299..e7bd924f2825e 100644
--- a/packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts
+++ b/packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts
@@ -7,19 +7,8 @@
  * For more information, please refer to: https://www.nocobase.com/agreement.
  */
 
-import {
-  Input,
-  Upload,
-  useCollection,
-  useCollectionField,
-  useCollectionManager,
-  useCollectionRecordData,
-  usePlugin,
-  useRequest,
-  withDynamicSchemaProps,
-} from '@nocobase/client';
-import React, { useEffect } from 'react';
-import { connect, mapProps, mapReadPretty, useField } from '@formily/react';
+import { useCollection, useCollectionField, useCollectionManager, usePlugin, useRequest } from '@nocobase/client';
+import { useEffect } from 'react';
 import FileManagerPlugin from '../';
 
 export function useStorage(storage) {
diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx b/packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx
index e7c4025a0b375..6a923d0dfa45c 100644
--- a/packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx
+++ b/packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx
@@ -8,15 +8,16 @@
  */
 
 import { Plugin, useCollection } from '@nocobase/client';
+import { STORAGE_TYPE_ALI_OSS, STORAGE_TYPE_LOCAL, STORAGE_TYPE_S3, STORAGE_TYPE_TX_COS } from '../constants';
 import { FileManagerProvider } from './FileManagerProvider';
+import { FileSizeField } from './FileSizeField';
 import { FileStoragePane } from './FileStorage';
+import { useAttachmentFieldProps, useFileCollectionStorageRules } from './hooks';
+import { useStorageCfg } from './hooks/useStorageUploadProps';
+import { AttachmentFieldInterface } from './interfaces/attachment';
 import { NAMESPACE } from './locale';
 import { storageTypes } from './schemas/storageTypes';
-import { AttachmentFieldInterface } from './interfaces/attachment';
 import { FileCollectionTemplate } from './templates';
-import { useAttachmentFieldProps, useFileCollectionStorageRules } from './hooks';
-import { FileSizeField } from './FileSizeField';
-import { STORAGE_TYPE_ALI_OSS, STORAGE_TYPE_LOCAL, STORAGE_TYPE_S3, STORAGE_TYPE_TX_COS } from '../constants';
 
 export class PluginFileManagerClient extends Plugin {
   // refer by plugin-field-attachment-url
@@ -58,6 +59,7 @@ export class PluginFileManagerClient extends Plugin {
     this.app.addScopes({
       useAttachmentFieldProps,
       useFileCollectionStorageRules,
+      useStorageCfg,
     });
 
     this.app.addComponents({
@@ -72,6 +74,49 @@ export class PluginFileManagerClient extends Plugin {
   getStorageType(name: string) {
     return this.storageTypes.get(name);
   }
+
+  async uploadFile(options?: {
+    file: File;
+    fileCollectionName?: string;
+    storageType?: string;
+    /** 后面可能会废弃这个参数 */
+    storageId?: number;
+    storageRules?: {
+      size: number;
+    };
+  }): Promise<{ errorMessage?: string; data?: any }> {
+    const storageTypeObj = this.getStorageType(options?.storageType);
+    if (storageTypeObj?.upload) {
+      // 1. If storageType is provided, call the upload method directly
+      return await storageTypeObj.upload({
+        file: options.file,
+        apiClient: this.app.apiClient,
+        storageType: options.storageType,
+        storageId: options.storageId,
+        storageRules: options.storageRules,
+        fileCollectionName: options.fileCollectionName,
+      });
+    }
+
+    // 2. If storageType is not provided, use the default upload method
+    try {
+      const formData = new FormData();
+      formData.append('file', options.file);
+      const res = await this.app.apiClient.request({
+        url: `${options.fileCollectionName || 'attachments'}:create`,
+        method: 'post',
+        data: formData,
+      });
+
+      return {
+        data: res.data?.data,
+      };
+    } catch (error) {
+      return {
+        errorMessage: error.message,
+      };
+    }
+  }
 }
 
 export default PluginFileManagerClient;
diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storage.ts b/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storage.ts
index bad767884e078..16b4526836520 100644
--- a/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storage.ts
+++ b/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storage.ts
@@ -53,7 +53,7 @@ const collection = {
       name: 'baseUrl',
       interface: 'input',
       uiSchema: {
-        title: `{{t("Access base URL", { ns: "${NAMESPACE}" })}}`,
+        title: `{{t("Base URL", { ns: "${NAMESPACE}" })}}`,
         type: 'string',
         'x-component': 'TextAreaWithGlobalScope',
         required: true,
diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storageTypes/ali-oss.tsx b/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storageTypes/ali-oss.tsx
index dcd868160ffc2..96383fc282e9a 100644
--- a/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storageTypes/ali-oss.tsx
+++ b/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storageTypes/ali-oss.tsx
@@ -7,11 +7,8 @@
  * For more information, please refer to: https://www.nocobase.com/agreement.
  */
 
-import React from 'react';
-
 import { NAMESPACE } from '../../locale';
 import common from './common';
-import { useTranslation } from 'react-i18next';
 
 export default {
   title: `{{t("Aliyun OSS", { ns: "${NAMESPACE}" })}}`,
diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storageTypes/tx-cos.tsx b/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storageTypes/tx-cos.tsx
index b86dc0c499c9e..8c0f1f6ccf4dd 100644
--- a/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storageTypes/tx-cos.tsx
+++ b/packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storageTypes/tx-cos.tsx
@@ -7,10 +7,8 @@
  * For more information, please refer to: https://www.nocobase.com/agreement.
  */
 
-import { useTranslation } from 'react-i18next';
 import { NAMESPACE } from '../../locale';
 import common from './common';
-import React from 'react';
 
 export default {
   title: `{{t("Tencent COS", { ns: "${NAMESPACE}" })}}`,
diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/locale/de-DE.json b/packages/plugins/@nocobase/plugin-file-manager/src/locale/de-DE.json
index 42a9c9da42849..41d5215a86002 100644
--- a/packages/plugins/@nocobase/plugin-file-manager/src/locale/de-DE.json
+++ b/packages/plugins/@nocobase/plugin-file-manager/src/locale/de-DE.json
@@ -20,7 +20,7 @@
   "Storage type": "Speichertyp",
   "Default storage": "Standardspeicher",
   "Storage base URL": "Basis-URL des Speichers",
-  "Access base URL": "Basis-URL für den Zugriff",
+  "Base URL": "Basis-URL",
   "Base URL for file access, could be your CDN base URL. For example: \"https://cdn.nocobase.com\".": "Basis-URL für den Dateizugriff, könnte Ihre CDN-Basis-URL sein. Zum Beispiel: \"https://cdn.nocobase.com\".",
   "Destination": "Ziel",
   "Use the built-in static file server": "Den integrierten statischen Dateiserver verwenden",
diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/locale/it-IT.json b/packages/plugins/@nocobase/plugin-file-manager/src/locale/it-IT.json
index 778734b98a951..01b1e9bf9b5bb 100644
--- a/packages/plugins/@nocobase/plugin-file-manager/src/locale/it-IT.json
+++ b/packages/plugins/@nocobase/plugin-file-manager/src/locale/it-IT.json
@@ -30,7 +30,7 @@
   "Allow uploading multiple files": "Consenti caricamento di più file",
   "Storage": "Spazio di archiviazione",
   "Storages": "Spazi di archiviazione",
-  "Access base URL": "URL base accesso",
+  "Base URL": "URL base",
   "Base URL for file access, could be your CDN base URL. For example: \"https://cdn.nocobase.com\".": "URL base per l'accesso ai file, potrebbe essere l'URL base del tuo CDN. Ad esempio: \"https://cdn.nocobase.com\".",
   "Relative path the file will be saved to. Left blank as root path. The leading and trailing slashes \"/\" will be ignored. For example: \"user/avatar\".": "Percorso relativo in cui verrà salvato il file. Lasciare vuoto per il percorso radice. Le barre iniziali e finali \"/\" verranno ignorate. Ad esempio: \"user/avatar\".",
   "Default storage will be used when not selected": "Se non selezionato verrà utilizzato lo spazio di archiviazione predefinito",
diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/locale/ja-JP.json b/packages/plugins/@nocobase/plugin-file-manager/src/locale/ja-JP.json
index aadd212423e47..afb39b45b92a8 100644
--- a/packages/plugins/@nocobase/plugin-file-manager/src/locale/ja-JP.json
+++ b/packages/plugins/@nocobase/plugin-file-manager/src/locale/ja-JP.json
@@ -32,7 +32,7 @@
   "Allow uploading multiple files": "複数ファイルのアップロードを許可する",
   "Storage": "ストレージ",
   "Storages": "ストレージ",
-  "Access base URL": "アクセスURLのベース",
+  "Base URL": "ベースURL",
   "Base URL for file access, could be your CDN base URL. For example: \"https://cdn.nocobase.com\".": "术语调整，“基礎URL”改为“ベースURL”",
   "Relative path the file will be saved to. Left blank as root path. The leading and trailing slashes \"/\" will be ignored. For example: \"user/avatar\".": "更清晰的表达方式，符合技术描述",
   "Default storage will be used when not selected": "空欄の場合はデフォルトのストレージが使用されます。",
diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/locale/zh-CN.json b/packages/plugins/@nocobase/plugin-file-manager/src/locale/zh-CN.json
index d08ac66fb09c9..7873a4dbcad1a 100644
--- a/packages/plugins/@nocobase/plugin-file-manager/src/locale/zh-CN.json
+++ b/packages/plugins/@nocobase/plugin-file-manager/src/locale/zh-CN.json
@@ -18,7 +18,7 @@
   "Storage name": "存储空间标识",
   "Storage type": "存储类型",
   "Default storage": "默认存储空间",
-  "Access base URL": "访问 URL 基础",
+  "Base URL": "基础 URL",
   "Base URL for file access, could be your CDN base URL. For example: \"https://cdn.nocobase.com\".": "文件访问的基础 URL，可以是你的 CDN 基础 URL。例如：\"https://cdn.nocobase.com\"。",
   "Destination": "上传目标文件夹",
   "Use the built-in static file server": "使用内置静态文件服务",
diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/server/actions/storages.ts b/packages/plugins/@nocobase/plugin-file-manager/src/server/actions/storages.ts
index b1f4c218e3c45..abcafd5159657 100644
--- a/packages/plugins/@nocobase/plugin-file-manager/src/server/actions/storages.ts
+++ b/packages/plugins/@nocobase/plugin-file-manager/src/server/actions/storages.ts
@@ -30,6 +30,8 @@ export async function getBasicInfo(context, next) {
     name: result.name,
     type: result.type,
     rules: result.rules,
+    baseUrl: result.options?.baseUrl,
+    public: result.options?.public,
   };
 
   next();
diff --git a/packages/plugins/@nocobase/plugin-file-manager/src/server/server.ts b/packages/plugins/@nocobase/plugin-file-manager/src/server/server.ts
index aaef4c1e79774..d581ba8772fc3 100644
--- a/packages/plugins/@nocobase/plugin-file-manager/src/server/server.ts
+++ b/packages/plugins/@nocobase/plugin-file-manager/src/server/server.ts
@@ -7,12 +7,12 @@
  * For more information, please refer to: https://www.nocobase.com/agreement.
  */
 
-import { basename } from 'path';
 import fs from 'fs';
+import { basename } from 'path';
 
-import { Plugin } from '@nocobase/server';
-import { isURL, Registry } from '@nocobase/utils';
 import { Collection, Model, Transactionable } from '@nocobase/database';
+import { Plugin } from '@nocobase/server';
+import { Registry } from '@nocobase/utils';
 import { STORAGE_TYPE_ALI_OSS, STORAGE_TYPE_LOCAL, STORAGE_TYPE_S3, STORAGE_TYPE_TX_COS } from '../constants';
 import initActions from './actions';
 import { AttachmentInterface } from './interfaces/attachment-interface';
diff --git a/packages/plugins/@nocobase/plugin-public-forms/src/server/plugin.ts b/packages/plugins/@nocobase/plugin-public-forms/src/server/plugin.ts
index f3c45f4487cb5..54bf5bcff42c4 100644
--- a/packages/plugins/@nocobase/plugin-public-forms/src/server/plugin.ts
+++ b/packages/plugins/@nocobase/plugin-public-forms/src/server/plugin.ts
@@ -14,8 +14,9 @@ import { parseAssociationNames } from './hook';
 class PasswordError extends Error {}
 
 export class PluginPublicFormsServer extends Plugin {
-  async parseCollectionData(formCollection, appends) {
-    const collection = this.db.getCollection(formCollection);
+  async parseCollectionData(dataSourceKey, formCollection, appends) {
+    const dataSource = this.app.dataSourceManager.dataSources.get(dataSourceKey);
+    const collection = dataSource.collectionManager.getCollection(formCollection);
     const collections = [
       {
         name: collection.name,
@@ -77,7 +78,7 @@ export class PluginPublicFormsServer extends Plugin {
     const schema = await uiSchema.getJsonSchema(filterByTk);
     const { getAssociationAppends } = parseAssociationNames(dataSourceKey, collectionName, this.app, schema);
     const { appends } = getAssociationAppends();
-    const collections = await this.parseCollectionData(collectionName, appends);
+    const collections = await this.parseCollectionData(dataSourceKey, collectionName, appends);
     return {
       dataSource: {
         key: dataSourceKey,
@@ -172,8 +173,9 @@ export class PluginPublicFormsServer extends Plugin {
       };
     } else if (
       (actionName === 'list' && ctx.PublicForm['targetCollections'].includes(resourceName)) ||
-      (collection.options.template === 'file' && actionName === 'create') ||
-      (resourceName === 'storages' && actionName === 'getBasicInfo') ||
+      (collection?.options.template === 'file' && actionName === 'create') ||
+      (resourceName === 'storages' && ['getBasicInfo', 'createPresignedUrl'].includes(actionName)) ||
+      (resourceName === 'vditor' && ['check'].includes(actionName)) ||
       (resourceName === 'map-configuration' && actionName === 'get')
     ) {
       ctx.permission = {


Reviews:
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR adds support for S3 Pro in Vditor by updating file manager and markdown editor components to include new storage configuration and upload logic.  
- Updated file manager plugin to import new storage types and expose the useStorageCfg hook.  
- Refactored the storage upload hook by streamlining imports and removing unused code.  
- Modified the Vditor editor component to use a new custom upload hook (useUpload) replacing inline upload configuration.

### Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

| File | Description |
| ---- | ----------- |
| packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx | Introduces new imports for storage types and registers useStorageCfg in the plugin scope. |
| packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts | Cleans up unused imports and streamlines hook logic for storage uploads. |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx | Replaces inline upload configuration with a new hook (useUpload) and refactors the Vditor initialization. |


<details>
<summary>Comments suppressed due to low confidence (1)</summary>

**packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx:132**
* The removal of fileCollection from the dependency array in the useEffect may lead to stale upload configuration if fileCollection changes dynamically. Consider re-adding fileCollection to the dependency array if its value is expected to change.
```
}, [toolbar?.join(',')]);
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-12T16:14:42Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR adds support for S3 Pro in Vditor by updating the file upload logic and refactoring related hooks and components. Key changes include:
- Introducing a new useUpload hook along with a helper format function in Edit.tsx.
- Removing duplicate and reordering imports in plugin-file-manager components.
- Cleaning up unused imports in useStorageUploadProps.ts.

### Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

| File                                                                                 | Description                                                         |
| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------- |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx  | Adds a new useUpload hook and refactors the upload configuration.   |
| packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx                    | Reorders and de-duplicates import statements.                        |
| packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts | Cleans up unused imports and streamlines hook usage.                 |


<details>
<summary>Comments suppressed due to low confidence (1)</summary>

**packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx:20**
* [nitpick] The function name 'format' is overly generic; consider renaming it to 'formatUploadResponse' to more clearly convey its purpose.
```
const format = (files, responseText) => {
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-13T01:44:11Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR adds S3 Pro support to Vditor by introducing a new upload hook and updating the file manager integration accordingly. Key changes include:
- The introduction of the useUpload hook to handle file uploads with custom request support.
- Updates to locale exports and file manager client configuration to integrate storage configuration.

### Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated no comments.

| File | Description |
| ---- | ----------- |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx | Added the useUpload hook and refactored the upload configuration in Vditor. |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/locale/index.ts | Changed the NAMESPACE definition to an export. |
| packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx | Reordered and added imports to support the new storage configuration. |
| packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts | Removed unused imports and cleaned up the hook code. |


<details>
<summary>Comments suppressed due to low confidence (1)</summary>

**packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx:115**
* The useMemo hook in useUpload uses the translation function 't' but it is not included in its dependency array, which might lead to stale translations if the language changes. Consider adding 't' to the dependency array.
```
  }, [action, apiClient, storageTypeUploadProps.customRequest, vditorInstanceRef]);
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-13T09:42:28Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR introduces S3 Pro support for Vditor by integrating custom upload functionality as well as updating file manager configurations to handle the new storage type.  
- Adds a new useUpload hook in the Vditor component to support a custom upload method, including handling for both image and non-image files.  
- Updates the markdown-vditor locale module to export NAMESPACE for consistent use.  
- Reorders and updates imports and hook usages in the file manager plugin to ensure proper integration with the new storage configuration.

### Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated no comments.

| File | Description |
| ---- | ----------- |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx | Introduced the useUpload hook with custom request handling and replaced the default upload configuration. |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/locale/index.ts | Changed the NAMESPACE constant to be an export, ensuring consistent locale usage. |
| packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx | Reorganized imports and integrated new hooks (useStorageCfg, useFileCollectionStorageRules) for storage configuration handling. |
| packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts | Removed unused imports and streamlined the hook setup for storage uploads. |




state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-13T12:49:14Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR adds support for S3 Pro storage to Vditor, enabling file uploads that leverage S3 Pro configuration.  
- Introduces a new hook (useUpload) in the Vditor editor component to handle custom upload logic with S3 Pro and local storage.  
- Updates API calls and server actions to include additional storage parameters (baseUrl and public).  
- Adjusts localization, schema titles, and storage configuration hooks to support the new S3 Pro functionality.

### Reviewed Changes

Copilot reviewed 16 out of 16 changed files in this pull request and generated no comments.

<details>
<summary>Show a summary per file</summary>

| File | Description |
| ---- | ----------- |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx | Refactored upload logic using a new hook and updated effect dependencies in the Vditor editor component |
| packages/plugins/@nocobase/plugin-file-manager/src/server/actions/storages.ts | Extended basic storage info by including baseUrl and public parameters |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/locale/index.ts | Updated export of NAMESPACE for locale usage |
| packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storage.ts | Updated schema title for the base URL field |
| packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts | Modified the useStorageCfg API signature to optionally accept a storageId parameter |
| packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx | Updated import order and exposed new scope useStorageCfg |
</details>



<details>
<summary>Comments suppressed due to low confidence (2)</summary>

**packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx:128**
* Using a mutable ref value (storageTypeUploadPropsRef.current) within the dependency array of useMemo may not trigger updates when its value changes. Consider refactoring to derive a stable value or state for proper memoization.
```
}, [action, apiClient, t, vditorInstanceRef, storageTypeUploadPropsRef.current, storage]);
```
**packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx:189**
* [nitpick] The dependency array for the useEffect hook no longer includes fileCollection, which is used to initialize the upload hook. Ensure that this change is intentional and that updates to fileCollection do not require reinitializing the Vditor instance.
```
}, [toolbar?.join(','), upload]);
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-17T14:21:38Z
user: login: copilot-pull-request-reviewer[bot]
body: Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-18T07:08:26Z
user: login: chenos
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T02:49:37Z
user: login: chenos
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T02:50:17Z
user: login: chenos
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-19T02:51:04Z
user: login: chenos
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T00:52:30Z
user: login: chenos
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T01:02:10Z
user: login: chenos
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T01:08:15Z
user: login: zhangzhonghe
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-24T01:49:33Z
user: login: zhangzhonghe
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-24T01:51:45Z
user: login: zhangzhonghe
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-24T02:14:49Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR adds support for S3 Pro in the Vditor integration by updating the server and client logic for file storage, including additional tests covering various storage configurations. Key changes include:
- Updated the Vditor server plugin to check storage settings (including S3 Pro conditions) and return appropriate upload support information.
- Enhanced test cases in the Vditor check suite to cover multiple storage scenarios.
- Modified the File Manager client code and associated hooks to incorporate new S3 Pro parameters and behavior.

### Reviewed Changes

Copilot reviewed 13 out of 23 changed files in this pull request and generated no comments.

<details>
<summary>Show a summary per file</summary>

| File                                                                                  | Description                                                    |
| ------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/__tests__/vditor-check.test.ts | Added tests for various storage configurations and behaviors.  |
| packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx                    | Introduced new uploadFile functionality and added storage hooks. |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/plugin.ts             | Updated plugin load to set resources and ACL for Vditor.       |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx    | Modified upload handler to integrate storage checks and file insertion logic. |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/interfaces/markdown-vditor.tsx | Updated UI schema description for file storage in Markdown editor. |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/locale/index.ts         | Exported NAMESPACE for translation consistency.              |
| packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storage.ts                | Revised storage schema title for clarity.                      |
| packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts      | Enhanced useStorageCfg hook to allow for an optional storageId parameter. |
| packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storageTypes/tx-cos.tsx       | Minor import adjustments for Tencent COS support.              |
| packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storageTypes/ali-oss.tsx      | Minor import adjustments for Aliyun OSS support.               |
</details>


<details>
<summary>Files not reviewed (10)</summary>

* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/de-DE.json**: Language not supported
* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/en-US.json**: Language not supported
* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/it-IT.json**: Language not supported
* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ja-JP.json**: Language not supported
* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ko-KR.json**: Language not supported
* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/zh-CN.json**: Language not supported
* **packages/plugins/@nocobase/plugin-file-manager/src/locale/de-DE.json**: Language not supported
* **packages/plugins/@nocobase/plugin-file-manager/src/locale/it-IT.json**: Language not supported
* **packages/plugins/@nocobase/plugin-file-manager/src/locale/ja-JP.json**: Language not supported
* **packages/plugins/@nocobase/plugin-file-manager/src/locale/zh-CN.json**: Language not supported
</details>

<details>
<summary>Comments suppressed due to low confidence (2)</summary>

**packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx:138**
* [nitpick] Verify that excluding 'fileCollection' from the dependency array in the useEffect hook is intentional; if 'fileCollection' may change over time, consider including it to ensure the effect always has up-to-date values.
```
    // eslint-disable-next-line react-hooks/exhaustive-deps
```
**packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts:40**
* Consider using the nullish coalescing operator (e.g. 'storageId ?? ...') instead of the logical OR operator to ensure valid 'storageId' values, such as 0, are not inadvertently ignored.
```
    storage: useStorage(storageId || field?.storage || collection?.getOption('storage') || targetCollection?.getOption('storage'))
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-24T10:30:02Z
user: login: chenos
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-26T02:51:46Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR introduces S3 Pro support for Vditor by updating both server and client functionality as well as adding comprehensive tests. Key changes include:
- New tests for verifying storage behavior across different configurations.
- Server-side enhancements to correctly determine upload support for various storage types.
- Client-side modifications to file upload handling and UI text improvements.

### Reviewed Changes

Copilot reviewed 13 out of 23 changed files in this pull request and generated no comments.

<details>
<summary>Show a summary per file</summary>

| File | Description |
| ---- | ----------- |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/__tests__/vditor-check.test.ts | Added tests for different storage scenarios including S3 Pro support. |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/plugin.ts | Integrated S3 Pro support and refined resource definition with proper namespace. |
| packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx | Added new uploadFile method and updated import organization and scope additions. |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx | Updated file upload handling logic and localized error handling for Vditor. |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/interfaces/markdown-vditor.tsx | Updated description for clarity regarding file storage. |
| packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/locale/index.ts | Changed the NAMESPACE export for consistency. |
| packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storage.ts | Updated UI text for configuring storage URLs. |
| packages/plugins/@nocobase/plugin-file-manager/src/client/hooks/useStorageUploadProps.ts | Cleaned up unused imports and consolidated hooks usage. |
| packages/plugins/@nocobase/plugin-file-manager/src/client/schemas/storageTypes/tx-cos.tsx, ali-oss.tsx | Removed unused React import and adjusted translation usage. |
</details>


<details>
<summary>Files not reviewed (10)</summary>

* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/de-DE.json**: Language not supported
* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/en-US.json**: Language not supported
* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/it-IT.json**: Language not supported
* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ja-JP.json**: Language not supported
* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/ko-KR.json**: Language not supported
* **packages/plugins/@nocobase/plugin-field-markdown-vditor/src/locale/zh-CN.json**: Language not supported
* **packages/plugins/@nocobase/plugin-file-manager/src/locale/de-DE.json**: Language not supported
* **packages/plugins/@nocobase/plugin-file-manager/src/locale/it-IT.json**: Language not supported
* **packages/plugins/@nocobase/plugin-file-manager/src/locale/ja-JP.json**: Language not supported
* **packages/plugins/@nocobase/plugin-file-manager/src/locale/zh-CN.json**: Language not supported
</details>

<details>
<summary>Comments suppressed due to low confidence (2)</summary>

**packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx:203**
* Removing the id attribute from the container div may affect CSS selectors or automated tests that rely on the id. Please verify that this change will not break dependent styles or functionality.
```
<div id={hashId} ref={containerRef}></div>
```
**packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx:141**
* [nitpick] The dependency array for the useEffect has been modified to exclude 'fileCollection' even though it's used within the effect. If 'fileCollection' can change over time, adding it as a dependency may be necessary to ensure correct reactivity.
```
// eslint-disable-next-line react-hooks/exhaustive-deps
  }, [toolbar?.join(',')]);
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-26T03:15:30Z

Review comments:
diff_hunk: @@ -68,24 +74,61 @@ export const Edit = withDynamicSchemaProps((props) => {
         onChange(value);
       },
       upload: {
-        url: app.getApiUrl(`${uploadFileCollection}:create`),
-        headers: apiClient.getHeaders(),
         multiple: false,
         fieldName: 'file',
-        max: 1024 * 1024 * 1024, // 1G
-        format(files, responseText) {
-          const response = JSON.parse(responseText);
-          const formatResponse = {
-            msg: '',
-            code: 0,
-            data: {
-              errFiles: [],
-              succMap: {
-                [response.data.filename]: response.data.url,
-              },
-            },
-          };
-          return JSON.stringify(formatResponse);
+        async handler(files: File[]) {
+          const file = files[0];
+
+          const storage = fileCollection
+            ? await getStorageConfigByFileCollectionName(fileCollection, app)
+            : await getDefaultStorageConfig(app);
path: packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx
user: login: chenos
body: 这里的实现不对，应该是 vditor 提供一个接口来处理
created_at: 2025-03-19T02:49:37Z
author_association: CONTRIBUTOR
diff_hunk: @@ -68,24 +74,61 @@ export const Edit = withDynamicSchemaProps((props) => {
         onChange(value);
       },
       upload: {
-        url: app.getApiUrl(`${uploadFileCollection}:create`),
-        headers: apiClient.getHeaders(),
         multiple: false,
         fieldName: 'file',
-        max: 1024 * 1024 * 1024, // 1G
-        format(files, responseText) {
-          const response = JSON.parse(responseText);
-          const formatResponse = {
-            msg: '',
-            code: 0,
-            data: {
-              errFiles: [],
-              succMap: {
-                [response.data.filename]: response.data.url,
-              },
-            },
-          };
-          return JSON.stringify(formatResponse);
+        async handler(files: File[]) {
+          const file = files[0];
+
+          const storage = fileCollection
+            ? await getStorageConfigByFileCollectionName(fileCollection, app)
+            : await getDefaultStorageConfig(app);
+
+          if (!storage) {
+            vditor.tip(t('Storage not found', { ns: NAMESPACE }), 3000);
+            return;
+          }
+
+          // s3-pro requires configuring baseUrl and must allow public access to upload files in Vditor
+          if (storage.type === 's3-compatible' && (!storage.options.baseUrl || !storage.options.public)) {
path: packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx
user: login: chenos
body: 这里尽量也不用这种硬编码，应该由上面的接口返回来做判断
created_at: 2025-03-19T02:50:17Z
author_association: CONTRIBUTOR
diff_hunk: @@ -159,3 +203,27 @@ export const Edit = withDynamicSchemaProps((props) => {
     </div>,
   );
 });
+
+async function getStorageConfigByFileCollectionName(fileCollectionName: string, app: any) {
+  const fileCollection = app.getCollectionManager().getCollection(fileCollectionName);
+  const storageId = fileCollection.getOption('storage');
+
+  if (storageId) {
+    const storageConfig = await app.apiClient.resource('storages').get({
+      filterByTk: storageId,
+    });
+
+    return storageConfig;
+  }
+
+  return null;
+}
+
+async function getDefaultStorageConfig(app: any) {
+  const { data }: any = await app.apiClient.resource('storages').get({
+    filter: {
+      default: true,
+    },
+  });
+  return data?.data;
path: packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx
user: login: chenos
body: 上面这俩方法的思路都不太对，应该是自定义一个接口来处理
created_at: 2025-03-19T02:51:04Z
author_association: CONTRIBUTOR
diff_hunk: @@ -18,6 +18,55 @@ export class PluginFieldMarkdownVditorServer extends Plugin {
 
   async load() {
     await this.copyVditorDist();
+    this.setResource();
+    this.app.acl.allow('vditor', 'check', 'public');
+  }
+
+  setResource() {
+    this.app.resourceManager.define({
+      name: 'vditor',
+      actions: {
+        check: async (context, next) => {
+          const { fileCollectionName } = context.action.params;
+          let storageName;
+          let storage;
+
+          if (fileCollectionName) {
+            const fileCollection = this.db.getCollection(fileCollectionName);
+            storageName = fileCollection?.options?.storage;
+            if (storageName) {
+              storage = await this.db.getRepository('storages').findOne({
+                where: {
+                  name: storageName,
+                },
+              });
+            } else {
+              storage = await this.db.getRepository('storages').findOne({
+                where: {
+                  default: true,
+                },
+              });
+            }
+          } else {
+            storage = await this.db.getRepository('storages').findOne({
+              where: {
+                default: true,
+              },
+            });
+          }
+
+          const isSupportToUploadFiles =
+            storage?.type !== 's3-compatible' || (storage?.options?.baseUrl && storage?.options?.public);
+
+          context.body = {
+            isSupportToUploadFiles: !!isSupportToUploadFiles,
+            storage,
path: packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/plugin.ts
user: login: chenos
body: 不要把 storage 这里有些是 key 参数，不要都暴露出去
created_at: 2025-03-24T00:52:30Z
author_association: CONTRIBUTOR
diff_hunk: @@ -18,6 +18,55 @@ export class PluginFieldMarkdownVditorServer extends Plugin {
 
   async load() {
     await this.copyVditorDist();
+    this.setResource();
+    this.app.acl.allow('vditor', 'check', 'public');
+  }
+
+  setResource() {
+    this.app.resourceManager.define({
+      name: 'vditor',
+      actions: {
+        check: async (context, next) => {
+          const { fileCollectionName } = context.action.params;
+          let storageName;
+          let storage;
+
+          if (fileCollectionName) {
+            const fileCollection = this.db.getCollection(fileCollectionName);
+            storageName = fileCollection?.options?.storage;
+            if (storageName) {
+              storage = await this.db.getRepository('storages').findOne({
+                where: {
+                  name: storageName,
+                },
+              });
+            } else {
+              storage = await this.db.getRepository('storages').findOne({
+                where: {
+                  default: true,
+                },
+              });
+            }
+          } else {
+            storage = await this.db.getRepository('storages').findOne({
+              where: {
+                default: true,
+              },
+            });
+          }
+
+          const isSupportToUploadFiles =
+            storage?.type !== 's3-compatible' || (storage?.options?.baseUrl && storage?.options?.public);
+
+          context.body = {
+            isSupportToUploadFiles: !!isSupportToUploadFiles,
path: packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/plugin.ts
user: login: chenos
body: isSupportToUploadFiles 的说法不太对，可以换个词，比如叫：uploadMode = 'direct' | 'proxy'。对应的参数说明：
- direct：客户端直传，直接上传到第三方服务，不经过 nocobase 服务端
- proxy：先传给 nocobase 服务端，再转存到第三方服务
created_at: 2025-03-24T00:58:07Z
author_association: CONTRIBUTOR
diff_hunk: @@ -72,6 +74,75 @@ export class PluginFileManagerClient extends Plugin {
   getStorageType(name: string) {
     return this.storageTypes.get(name);
   }
+
+  async uploadFile(options?: {
+    file: File;
+    fileCollectionName?: string;
+    storageId?: string;
+  }): Promise<{ errorMessage?: string; data?: any }> {
path: packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx
user: login: chenos
body: 这个方法的整个实现思路不太对
created_at: 2025-03-24T01:00:55Z
author_association: CONTRIBUTOR
diff_hunk: @@ -264,6 +264,7 @@ export class PluginFileManagerServer extends Plugin {
 
     this.app.acl.allow('attachments', ['upload', 'create'], 'loggedIn');
     this.app.acl.allow('storages', 'getBasicInfo', 'loggedIn');
+    this.app.acl.allow('storages', 'getStorageByCollectionName', 'public');
path: packages/plugins/@nocobase/plugin-file-manager/src/server/server.ts
user: login: chenos
body: 这个不能 public
created_at: 2025-03-24T01:01:40Z
author_association: CONTRIBUTOR
diff_hunk: @@ -68,24 +73,57 @@ export const Edit = withDynamicSchemaProps((props) => {
         onChange(value);
       },
       upload: {
-        url: app.getApiUrl(`${uploadFileCollection}:create`),
-        headers: apiClient.getHeaders(),
         multiple: false,
         fieldName: 'file',
-        max: 1024 * 1024 * 1024, // 1G
-        format(files, responseText) {
-          const response = JSON.parse(responseText);
-          const formatResponse = {
-            msg: '',
-            code: 0,
-            data: {
-              errFiles: [],
-              succMap: {
-                [response.data.filename]: response.data.url,
-              },
-            },
-          };
-          return JSON.stringify(formatResponse);
+        async handler(files: File[]) {
+          const file = files[0];
+
+          const { data: checkData } = await apiClient.resource('vditor').check({
+            fileCollectionName: fileCollection,
+          });
+
+          if (!checkData?.data?.isSupportToUploadFiles) {
+            vditor.tip(
+              t('vditor.uploadError.message', { ns: NAMESPACE, storageTitle: checkData.data.storage?.title }),
+              0,
+            );
+            return;
+          }
+
+          vditor.tip(t('uploading'), 0);
+          const { data, errorMessage } = await fileManagerPlugin.uploadFile({
+            file,
+            fileCollectionName: fileCollection,
path: packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx
user: login: chenos
body: vditor:check 已经取到 storage，就不必 uploadFile 内部再查了
created_at: 2025-03-24T01:08:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -68,24 +73,57 @@ export const Edit = withDynamicSchemaProps((props) => {
         onChange(value);
       },
       upload: {
-        url: app.getApiUrl(`${uploadFileCollection}:create`),
-        headers: apiClient.getHeaders(),
         multiple: false,
         fieldName: 'file',
-        max: 1024 * 1024 * 1024, // 1G
-        format(files, responseText) {
-          const response = JSON.parse(responseText);
-          const formatResponse = {
-            msg: '',
-            code: 0,
-            data: {
-              errFiles: [],
-              succMap: {
-                [response.data.filename]: response.data.url,
-              },
-            },
-          };
-          return JSON.stringify(formatResponse);
+        async handler(files: File[]) {
+          const file = files[0];
+
+          const { data: checkData } = await apiClient.resource('vditor').check({
+            fileCollectionName: fileCollection,
+          });
+
+          if (!checkData?.data?.isSupportToUploadFiles) {
+            vditor.tip(
+              t('vditor.uploadError.message', { ns: NAMESPACE, storageTitle: checkData.data.storage?.title }),
+              0,
+            );
+            return;
+          }
+
+          vditor.tip(t('uploading'), 0);
+          const { data, errorMessage } = await fileManagerPlugin.uploadFile({
+            file,
+            fileCollectionName: fileCollection,
path: packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx
user: login: zhangzhonghe
body: 我之前也是避免再查一遍的，但是 uploadFile 这里会多一个参数。所以为了简化参数，就在内部再查一遍。感觉问题不大
created_at: 2025-03-24T01:49:33Z
author_association: MEMBER
diff_hunk: @@ -18,6 +18,55 @@ export class PluginFieldMarkdownVditorServer extends Plugin {
 
   async load() {
     await this.copyVditorDist();
+    this.setResource();
+    this.app.acl.allow('vditor', 'check', 'public');
+  }
+
+  setResource() {
+    this.app.resourceManager.define({
+      name: 'vditor',
+      actions: {
+        check: async (context, next) => {
+          const { fileCollectionName } = context.action.params;
+          let storageName;
+          let storage;
+
+          if (fileCollectionName) {
+            const fileCollection = this.db.getCollection(fileCollectionName);
+            storageName = fileCollection?.options?.storage;
+            if (storageName) {
+              storage = await this.db.getRepository('storages').findOne({
+                where: {
+                  name: storageName,
+                },
+              });
+            } else {
+              storage = await this.db.getRepository('storages').findOne({
+                where: {
+                  default: true,
+                },
+              });
+            }
+          } else {
+            storage = await this.db.getRepository('storages').findOne({
+              where: {
+                default: true,
+              },
+            });
+          }
+
+          const isSupportToUploadFiles =
+            storage?.type !== 's3-compatible' || (storage?.options?.baseUrl && storage?.options?.public);
+
+          context.body = {
+            isSupportToUploadFiles: !!isSupportToUploadFiles,
path: packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/plugin.ts
user: login: zhangzhonghe
body: 这里感觉没必要。Vditor 这里只需要知道的是能不能上传文件，能的话就交个 uploadFile 方法上传，不能就报错。现在就只需要这些
created_at: 2025-03-24T01:51:45Z
author_association: MEMBER
diff_hunk: @@ -18,6 +18,55 @@ export class PluginFieldMarkdownVditorServer extends Plugin {
 
   async load() {
     await this.copyVditorDist();
+    this.setResource();
+    this.app.acl.allow('vditor', 'check', 'public');
+  }
+
+  setResource() {
+    this.app.resourceManager.define({
+      name: 'vditor',
+      actions: {
+        check: async (context, next) => {
+          const { fileCollectionName } = context.action.params;
+          let storageName;
+          let storage;
+
+          if (fileCollectionName) {
+            const fileCollection = this.db.getCollection(fileCollectionName);
+            storageName = fileCollection?.options?.storage;
+            if (storageName) {
+              storage = await this.db.getRepository('storages').findOne({
+                where: {
+                  name: storageName,
+                },
+              });
+            } else {
+              storage = await this.db.getRepository('storages').findOne({
+                where: {
+                  default: true,
+                },
+              });
+            }
+          } else {
+            storage = await this.db.getRepository('storages').findOne({
+              where: {
+                default: true,
+              },
+            });
+          }
+
+          const isSupportToUploadFiles =
+            storage?.type !== 's3-compatible' || (storage?.options?.baseUrl && storage?.options?.public);
+
+          context.body = {
+            isSupportToUploadFiles: !!isSupportToUploadFiles,
+            storage,
path: packages/plugins/@nocobase/plugin-field-markdown-vditor/src/server/plugin.ts
user: login: zhangzhonghe
body: 像 getBasicInfo 接口那样是不是可以？
![image](https://github.com/user-attachments/assets/e52a5ae3-06ab-40e3-b50a-cae12c159368)

created_at: 2025-03-24T02:14:49Z
author_association: MEMBER
diff_hunk: @@ -72,6 +74,49 @@ export class PluginFileManagerClient extends Plugin {
   getStorageType(name: string) {
     return this.storageTypes.get(name);
   }
+
+  async uploadFile(options?: {
+    file: File;
+    fileCollectionName?: string;
+    storageType?: string;
+    /** 后面可能会废弃这个参数 */
+    storageId?: number;
+    storageRules?: {
+      size: number;
path: packages/plugins/@nocobase/plugin-file-manager/src/client/index.tsx
user: login: chenos
body: 少了个 MIME type 参数
created_at: 2025-03-26T02:51:45Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-03-12T18:01:18Z
body: ### Tests results for "E2E"
**7 fatal errors, not part of any test**
**33 failed**
:x: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:61:7 › grid card block schema settings › set the count of columns displayed in a row of new version
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/orMode.test.ts:29:5 › 3 in parallel, first one, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/orMode.test.ts:247:5 › 3 in parallel, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/orMode.test.ts:465:5 › 3 in parallel, first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/orMode.test.ts:683:5 › Serial of 3, first one, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/orMode.test.ts:897:5 › Serial of 3, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/orMode.test.ts:1111:5 › Serial of 3,  first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/block.test.ts:24:5 › Apply form block title
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/block.test.ts:247:5 › Delete apply form block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/field.test.ts:25:5 › Generic properties for single-line text
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:30:5 › 3 in parallel, first one, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:289:5 › 3 in parallel, Rejection is the end, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:554:5 › 3 in parallel, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:814:5 › 3 in parallel, first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1074:5 › Serial of 3, first one, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1330:5 › Serial of 3, Rejection is the end, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1591:5 › Serial of 3, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1847:5 › Serial of 3,  first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/button.test.ts:25:5 › Secondary confirmation
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/votingMode.test.ts:29:5 › 3 in parallel, 2 passed
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:54:7 › creation form block schema settings › Save as block template & convert reference to duplicate
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:172:9 › actions schema settings › bulk delete › supported options
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:233:9 › actions schema settings › delete › edit button
:x: [chromium] › core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaSettings.test.ts:20:7 › filter block schema settings › supported options
:x: [chromium] › pro-plugins/@nocobase/plugin-embed/src/client/__e2e__/popup.test.ts:5:7 › popup in embed › should can open popup in all blocks
:x: [chromium] › pro-plugins/@nocobase/plugin-embed/src/client/__e2e__/popup.test.ts:71:7 › popup in embed › should can open subpage in embed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:33:7 › orMode › Select assignees, Fixed 1 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:228:7 › orMode › Select assignees, Fixed 2 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:428:7 › orMode › Select assignees, Variable 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:649:7 › orMode › Query assignees, 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:872:7 › orMode › Select assignees, Fixed 1 person; Query assignees, 2 persons,passed.

<details>
<summary><b>30 flaky</b></summary>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/link/basic.test.ts:93:7 › Link › open in new window <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:34:7 › grid card block schema settings › set the count of columns displayed in a row <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/linkageStyleSettings.test.ts:13:7 › view › linkage style color <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:348:7 › configure actions column › column width <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/actionAccessControl.test.ts:38:7 › Access control › access control with role  <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings2.test.ts:198:7 › linkage rules › variable labels should be displayed normally <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaSettings.test.ts:33:9 › collapse schema settings › connect data blocks › connecting two blocks of the same collection <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/schemaSettings.test.ts:86:7 › tabs schema settings › edit <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/basic.test.ts:14:7 › variables › linkage rules of table view action <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-calendar/src/client/__e2e__/schemaInitializer.test.ts:14:7 › where can be added › page <br/>
:warning: [chromium] › plugins/@nocobase/plugin-kanban/src/client/__e2e__/schemaSettings.test.ts:15:7 › configure setting › set the data scope <br/>
:warning: [chromium] › plugins/@nocobase/plugin-data-source-main/src/client/__e2e__/fields/attachment/schemaInitializer.test.ts:57:7 › form item & view form › configure fields <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow/src/client/__e2e__/ScheduleEventTrigger/configuration.test.ts:29:7 › Configuration page copy to new version › Copy the Schedule event of the Configuration Trigger node <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow-action-trigger/src/client/__e2e__/configuration2.test.ts:67:7 › Configuration Page Path Jump Workflow Management Page › Action event Workflow History Version Configuration Page Path Jump Workflow Management Page <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/associationForm.test.ts:48:7 › association form block › association table block add new  <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:65:9 › table block schema settings › enable drag and drop sorting › enable drag and drop sorting <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings2.test.ts:13:7 › save as template › save as template, then delete it <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts:14:7 › bulk edit action setting › data will be updated && edit form configure <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaSettings.test.ts:34:7 › direct duplicate & copy into the form and continue to fill in › copy into the form and continue to fill in <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/workflowTodo.test.ts:139:5 › filter workflow name <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:221:9 › actions schema settings › delete › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:300:9 › actions schema settings › view › linkage rules <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:975:9 › actions schema settings › add record › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/form/__e2e__/autoFilterWhenSettingDefaultValue.test.ts:93:7 › filter form › with dataLoadingMode is manual <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/dragAndDrop.test.ts:12:5 › tabs <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:90:5 › allows to clear cache,reboot application  <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-print/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › ReadPrettyFormActionInitializers & CalendarFormActionInitializers should add print action › print action in ReadPrettyFormActionInitializers <br/>

</details>

**1044 passed, 35 skipped, 67 did not run**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/13816214180/artifacts/2739890835). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/13816214180).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-13T03:19:10Z
body: ### Tests results for "E2E"
**7 fatal errors, not part of any test**
**29 failed**
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:33:7 › orMode › Select assignees, Fixed 1 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:228:7 › orMode › Select assignees, Fixed 2 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:428:7 › orMode › Select assignees, Variable 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:649:7 › orMode › Query assignees, 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:872:7 › orMode › Select assignees, Fixed 1 person; Query assignees, 2 persons,passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:29:5 › 3 in parallel, 3 passed
:x: [chromium] › plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/workflowTodo.test.ts:139:5 › filter workflow name
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/approvalCentreInitiated-DataBlockApproval/noWithdrawalPermitted.test.ts:26:5 › approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/approvalCentreInitiated-DataBlockApproval/noWithdrawalPermitted.test.ts:170:5 › approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/approvalCentreInitiated-DataBlockApproval/noWithdrawalPermitted.test.ts:316:5 › approval returned, submitted for approval, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/approvalCentreInitiated-DataBlockApproval/noWithdrawalPermitted.test.ts:499:5 › approval returned, submitted for approval, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/approvalCentreInitiated-DataBlockApproval/noWithdrawalPermitted.test.ts:684:5 › approval returned, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/dataBlockInitiation-ApprovalCentreApproval/noWithdrawalPermitted.test.ts:25:5 › approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/dataBlockInitiation-ApprovalCentreApproval/noWithdrawalPermitted.test.ts:153:5 › approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/dataBlockInitiation-ApprovalCentreApproval/noWithdrawalPermitted.test.ts:273:5 › approval returned, submitted for approval, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/dataBlockInitiation-ApprovalCentreApproval/noWithdrawalPermitted.test.ts:440:5 › approval returned, submitted for approval, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:30:5 › 3 in parallel, 2 passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:311:5 › 3 in parallel, Rejection is the end, 2 reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:593:5 › 3 in parallel, 2 reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:874:5 › 3 in parallel, first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:1136:5 › Serial of 3,  2 passed
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs
:x: [chromium] › plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaSettings.test.ts:34:7 › direct duplicate & copy into the form and continue to fill in › copy into the form and continue to fill in
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:26:7 › creation form block schema settings › edit block title
:x: [chromium] › core/client/src/modules/actions/__e2e__/link/basic.test.ts:93:7 › Link › open in new window
:x: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:34:7 › grid card block schema settings › set the count of columns displayed in a row
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › pro-plugins/@nocobase/plugin-embed/src/client/__e2e__/popup.test.ts:5:7 › popup in embed › should can open popup in all blocks
:x: [chromium] › pro-plugins/@nocobase/plugin-embed/src/client/__e2e__/popup.test.ts:71:7 › popup in embed › should can open subpage in embed

<details>
<summary><b>21 flaky</b></summary>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/setDataLoadingModeSettingsItem.test.ts:14:7 › setDataLoadingModeSettingsItem › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/linkageStyleSettings.test.ts:13:7 › view › linkage style color <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:1015:7 › table column schema settings › fixed column <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/linkageRules.test.ts:18:7 › linkage rules › form field depends on subtable fields with linkage rules <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-custom-request/src/client/__e2e__/schemaSettings.test.ts:13:7 › custom request action › edit button <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow/src/client/__e2e__/conditionNode/BranchIntoYesAndNoFormulaEngine.test.ts:157:5 › Collection event Add Data Trigger, determines that the trigger node single line text field variable is equal to an unequal constant, fails. <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow/src/client/__e2e__/conditionNode/BranchIntoYesAndNoFormulaEngine.test.ts:410:5 › Collection event Add Data Trigger, determines that the trigger node single line text field variable is not equal to an unequal constant, passes. <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/dragAndDrop.test.ts:12:5 › tabs <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/actionAccessControl.test.ts:14:7 › Access control › popup、link、custom request support access control <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaInitailizer.test.ts:13:7 › TableActionColumnInitializers & DetailsActionInitializers & ReadPrettyFormActionInitializers should add duplication action › duplication action in TableActionColumnInitializers <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/submit/refreshData.test.ts:18:7 › Submit: should refresh data after submit › submit in reference template block <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:87:7 › edit form block schema settings › Convert reference to duplicate & Save as block template <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:65:9 › table block schema settings › enable drag and drop sorting › enable drag and drop sorting <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/basic.test.ts:31:7 › variables › API token <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-data-visualization/src/client/__e2e__/defaultValue.test.ts:13:7 › defaultValue › date variables <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings2.test.ts:198:7 › linkage rules › variable labels should be displayed normally <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/parentObject.test.ts:14:7 › variable: parent object › in default value <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/parentObject.test.ts:53:7 › variable: parent object › in linkage rules <br/>

</details>

**1041 passed, 35 skipped, 65 did not run**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/13825187063/artifacts/2742621488). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/13825187063).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-13T14:32:47Z
body: ### Tests results for "E2E"
**7 fatal errors, not part of any test**
**29 failed**
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/hideColumn.test.ts:14:7 › hide column › basic
:x: [chromium] › pro-plugins/@nocobase/plugin-embed/src/client/__e2e__/popup.test.ts:5:7 › popup in embed › should can open popup in all blocks
:x: [chromium] › pro-plugins/@nocobase/plugin-embed/src/client/__e2e__/popup.test.ts:71:7 › popup in embed › should can open subpage in embed
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:54:7 › creation form block schema settings › Save as block template & convert reference to duplicate
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs
:x: [chromium] › core/client/src/modules/variable/__e2e__/parentObject.test.ts:53:7 › variable: parent object › in linkage rules
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:33:7 › orMode › Select assignees, Fixed 1 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:228:7 › orMode › Select assignees, Fixed 2 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:428:7 › orMode › Select assignees, Variable 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:649:7 › orMode › Query assignees, 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:872:7 › orMode › Select assignees, Fixed 1 person; Query assignees, 2 persons,passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/field.test.ts:25:5 › Generic properties for single-line text
:x: [chromium] › core/client/src/modules/actions/__e2e__/submit/refreshData.test.ts:18:7 › Submit: should refresh data after submit › submit in reference template block
:x: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts:20:7 › multi data details block schema settings › supported options
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:30:5 › 3 in parallel, first one, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:289:5 › 3 in parallel, Rejection is the end, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:554:5 › 3 in parallel, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:814:5 › 3 in parallel, first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1074:5 › Serial of 3, first one, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1330:5 › Serial of 3, Rejection is the end, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1591:5 › Serial of 3, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1847:5 › Serial of 3,  first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:29:5 › 3 in parallel, 3 passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:30:5 › 3 in parallel, 2 passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:311:5 › 3 in parallel, Rejection is the end, 2 reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:593:5 › 3 in parallel, 2 reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:874:5 › 3 in parallel, first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:1136:5 › Serial of 3,  2 passed

<details>
<summary><b>31 flaky</b></summary>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/associationForm.test.ts:48:7 › association form block › association table block add new  <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:14:7 › grid card block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:61:7 › grid card block schema settings › set the count of columns displayed in a row of new version <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaSettings.test.ts:19:7 › collapse schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/menu/__e2e__/dragAndDrop.test.ts:12:5 › single page <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-custom-request/src/client/__e2e__/schemaSettings.test.ts:13:7 › custom request action › edit button <br/>
:warning: [chromium] › plugins/@nocobase/plugin-kanban/src/client/__e2e__/schemaSettings.test.ts:15:7 › configure setting › set the data scope <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:26:7 › creation form block schema settings › edit block title <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:118:7 › creation form block schema settings › save as block Template <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:273:7 › creation form block schema settings › save block template & using block template <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:293:9 › table block schema settings › connect data blocks › connecting two blocks connected by a foreign key <br/>
:warning: [chromium] › core/client/src/modules/blocks/other-blocks/markdown/__e2e__/schemaSettings.test.ts:13:7 › markdown block schema settings › supported options <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaSettings.test.ts:14:7 › direct duplicate & copy into the form and continue to fill in › direct duplicate <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaSettings.test.ts:119:7 › direct duplicate & copy into the form and continue to fill in › association block in popup <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/workflowTodo.test.ts:139:5 › filter workflow name <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/link/basic.test.ts:19:7 › Link › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:192:7 › actions schema settings › customize: save record <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/basic.test.ts:31:7 › variables › API token <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-block-iframe/src/client/__e2e__/inPopup.test.ts:14:7 › iframe in popup › open popup, then close it, that should work <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaSettings.test.ts:13:7 › list block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:254:9 › actions schema settings › edit › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:268:9 › actions schema settings › refresh › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:754:9 › actions schema settings › popup › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:975:9 › actions schema settings › add record › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:1015:7 › table column schema settings › fixed column <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/dragAndDrop.test.ts:12:5 › tabs <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/currentRecord.test.ts:14:7 › variable: Current Record › Current record should be consistent with current form field values <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts:14:7 › bulk edit action setting › data will be updated && edit form configure <br/>

</details>

**1033 passed, 35 skipped, 78 did not run**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/13834800130/artifacts/2746037846). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/13834800130).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-17T07:01:17Z
body: ### Tests results for "E2E"
**7 fatal errors, not part of any test**
**29 failed**
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:33:7 › orMode › Select assignees, Fixed 1 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:244:7 › orMode › Select assignees, Fixed 2 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:460:7 › orMode › Select assignees, Variable 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:699:7 › orMode › Query assignees, 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:940:7 › orMode › Select assignees, Fixed 1 person; Query assignees, 2 persons,passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:29:5 › 3 in parallel, 3 passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:299:5 › 3 in parallel, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:517:5 › 3 in parallel, first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:735:5 › Serial of 3,  3 passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:982:5 › Serial of 3, first one, approval reject
:x: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts:20:7 › multi data details block schema settings › supported options
:x: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts:41:7 › multi data details block schema settings › support linkage rule
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:26:7 › creation form block schema settings › edit block title
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:65:9 › table block schema settings › enable drag and drop sorting › enable drag and drop sorting
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:202:9 › table block schema settings › set default sorting rules › set default sorting rules
:x: [chromium] › pro-plugins/@nocobase/plugin-embed/src/client/__e2e__/popup.test.ts:5:7 › popup in embed › should can open popup in all blocks
:x: [chromium] › pro-plugins/@nocobase/plugin-embed/src/client/__e2e__/popup.test.ts:71:7 › popup in embed › should can open subpage in embed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:30:5 › 3 in parallel, first one, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:289:5 › 3 in parallel, Rejection is the end, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:554:5 › 3 in parallel, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:814:5 › 3 in parallel, first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1074:5 › Serial of 3, first one, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1330:5 › Serial of 3, Rejection is the end, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1591:5 › Serial of 3, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1847:5 › Serial of 3,  first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/button.test.ts:25:5 › Secondary confirmation
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/approvalCentre-InitiationAndApproval/noWithdrawalPermitted.test.ts:25:5 › approval passed
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs

<details>
<summary><b>20 flaky</b></summary>
:warning: [chromium] › plugins/@nocobase/plugin-workflow/src/client/__e2e__/collectionEventTrigger/configuration2.test.ts:63:7 › Configuration Page Path Jump Workflow Management Page › Collection event Workflow History Version Configuration Page Path Jump Workflow Management Page <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:34:7 › grid card block schema settings › set the count of columns displayed in a row <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/dragAndDrop.test.ts:12:5 › tabs <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/popups.test.ts:35:7 › popup opened by clicking the association field › popup configuration should persist across different rows in the same column <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:348:7 › configure actions column › column width <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers  › TableActionInitializers should add bulk update <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-block-iframe/src/client/__e2e__/inPopup.test.ts:14:7 › iframe in popup › open popup, then close it, that should work <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings2.test.ts:198:7 › linkage rules › variable labels should be displayed normally <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:26:7 › edit form block schema settings › Edit block title <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:87:7 › edit form block schema settings › Convert reference to duplicate & Save as block template <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaSettings.test.ts:20:7 › filter block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/fields/__e2e__/component/Input.Preview/basic.test.ts:16:7 › Input.Preview › switch to Input.Preview from Input.URL <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers should add bulk edit action › bulk edit in TableActionInitializers <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaSettings.test.ts:14:7 › data will be updated && Assign field values && after successful submission › data will be updated && Assign field values && after successful submission <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/submit/refreshData.test.ts:18:7 › Submit: should refresh data after submit › submit in reference template block <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaSettings.test.ts:13:7 › list block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/other-blocks/markdown/__e2e__/schemaSettings.test.ts:26:7 › markdown block schema settings › edit markdown <br/>

</details>

**1061 passed, 36 skipped, 63 did not run**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/13891536489/artifacts/2762508442). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/13891536489).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-17T13:36:42Z
body: ### Tests results for "E2E"
**7 fatal errors, not part of any test**
**29 failed**
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/block.test.ts:682:5 › Pre-QueryRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/block.test.ts:909:5 › Pre-CreateRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/block.test.ts:1362:5 › Pre-Manual block, create record form
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:33:7 › orMode › Select assignees, Fixed 1 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:229:7 › orMode › Select assignees, Fixed 2 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:430:7 › orMode › Select assignees, Variable 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:652:7 › orMode › Query assignees, 3 persons, passed.
:x: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:34:7 › grid card block schema settings › set the count of columns displayed in a row
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › pro-plugins/@nocobase/plugin-embed/src/client/__e2e__/popup.test.ts:5:7 › popup in embed › should can open popup in all blocks
:x: [chromium] › pro-plugins/@nocobase/plugin-embed/src/client/__e2e__/popup.test.ts:71:7 › popup in embed › should can open subpage in embed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:248:5 › Pre-QueryRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:485:5 › Pre-CreateRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:735:5 › Pre-Manual block, create record form
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/field.test.ts:197:5 › Pre-QueryRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/field.test.ts:383:5 › Pre-CreateRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/field.test.ts:583:5 › Pre-Manual block, create record form
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:29:5 › 3 in parallel, 3 passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:300:5 › 3 in parallel, first one, approval reject
:x: [chromium] › core/client/src/modules/actions/__e2e__/link/basic.test.ts:93:7 › Link › open in new window
:x: [chromium] › core/client/src/modules/menu/__e2e__/schemaSettings.test.ts:48:7 › link page menu schema settings › supported options
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings2.test.ts:198:7 › linkage rules › variable labels should be displayed normally
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:130:9 › actions schema settings › add new › popup size
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:30:5 › 3 in parallel, 2 passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:312:5 › 3 in parallel, Rejection is the end, 2 reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:595:5 › 3 in parallel, 2 reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:877:5 › 3 in parallel, first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:1140:5 › Serial of 3,  2 passed

<details>
<summary><b>28 flaky</b></summary>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:14:7 › grid card block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/blockTemplate.test.ts:14:7 › block template › Ordinary block templates cannot be used to create association blocks, and vice versa <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/schemaSettings.test.ts:86:7 › tabs schema settings › edit <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-block-iframe/src/client/__e2e__/inPopup.test.ts:14:7 › iframe in popup › open popup, then close it, that should work <br/>
:warning: [chromium] › core/client/src/modules/actions/associate/__e2e__/associate.test.ts:13:5 › basic <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/dragAndDrop.test.ts:12:5 › tabs <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>
:warning: [chromium] › plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaSettings.test.ts:48:7 › configure params in gantt block › set title field <br/>
:warning: [chromium] › plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaSettings.test.ts:61:7 › configure params in gantt block › set start date field  <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow/src/client/__e2e__/collectionEventTrigger/configuration2.test.ts:63:7 › Configuration Page Path Jump Workflow Management Page › Collection event Workflow History Version Configuration Page Path Jump Workflow Management Page <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-custom-action-trigger/src/client/__e2e__/configuration.test.ts:344:7 › Workflow Enable Disable › Form event Workflow Add Data Trigger Disable Enable Post Trigger <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:56:7 › edit form block schema settings › Linkage rules <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/linkageStyleSettings.test.ts:13:7 › view › linkage style color <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:59:9 › actions schema settings › add new › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:159:9 › actions schema settings › add new › delete <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:233:9 › actions schema settings › delete › edit button <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:975:9 › actions schema settings › add record › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:65:9 › table block schema settings › enable drag and drop sorting › enable drag and drop sorting <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:202:9 › table block schema settings › set default sorting rules › set default sorting rules <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/SchemaToolbar.test.ts:13:7 › SchemaToolbar › initializer: block should be immediately visible after being added <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts:14:7 › bulk edit action setting › data will be updated && edit form configure <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:273:7 › creation form block schema settings › save block template & using block template <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaSettings.test.ts:33:9 › collapse schema settings › connect data blocks › connecting two blocks of the same collection <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/currentObject.test.ts:14:7 › variable: current object › in sub table <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers should add bulk edit action › bulk edit in TableActionInitializers <br/>
:warning: [chromium] › plugins/@nocobase/plugin-kanban/src/client/__e2e__/schemaSettings.test.ts:15:7 › configure setting › set the data scope <br/>

</details>

**1027 passed, 35 skipped, 83 did not run**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/13897163956/artifacts/2764774811). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/13897163956).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-18T09:38:27Z
body: ### Tests results for "E2E"
**7 fatal errors, not part of any test**
**31 failed**
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/field.test.ts:197:5 › Pre-QueryRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/field.test.ts:383:5 › Pre-CreateRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/field.test.ts:583:5 › Pre-Manual block, create record form
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:33:7 › orMode › Select assignees, Fixed 1 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:245:7 › orMode › Select assignees, Fixed 2 person, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:462:7 › orMode › Select assignees, Variable 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:702:7 › orMode › Query assignees, 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:248:5 › Pre-QueryRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:485:5 › Pre-CreateRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:735:5 › Pre-Manual block, create record form
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:30:5 › 3 in parallel, first one, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:290:5 › 3 in parallel, Rejection is the end, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:556:5 › 3 in parallel, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:817:5 › 3 in parallel, first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1078:5 › Serial of 3, first one, approval passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1335:5 › Serial of 3, Rejection is the end, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1597:5 › Serial of 3, first one, approval reject
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:118:7 › creation form block schema settings › save as block Template
:x: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:14:7 › grid card block schema settings › supported options
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:56:7 › edit form block schema settings › Linkage rules
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:775:9 › actions schema settings › duplicate › supported options
:x: [chromium] › core/client/src/modules/actions/__e2e__/submit/refreshData.test.ts:18:7 › Submit: should refresh data after submit › submit in reference template block
:x: [chromium] › plugins/@nocobase/plugin-workflow-aggregate/src/client/__e2e__/DataOfCollection.test.ts:244:7 › filter › Collection event add data trigger, normal table integer fields not de-emphasised AVG
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/block.test.ts:682:5 › Pre-QueryRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/block.test.ts:909:5 › Pre-CreateRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/block.test.ts:1362:5 › Pre-Manual block, create record form
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:30:5 › 3 in parallel, 2 passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:312:5 › 3 in parallel, Rejection is the end, 2 reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:595:5 › 3 in parallel, 2 reject
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs

<details>
<summary><b>24 flaky</b></summary>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:26:7 › creation form block schema settings › edit block title <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:34:7 › grid card block schema settings › set the count of columns displayed in a row <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-print/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › ReadPrettyFormActionInitializers & CalendarFormActionInitializers should add print action › print action in ReadPrettyFormActionInitializers <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-data-visualization/src/client/__e2e__/defaultValue.test.ts:13:7 › defaultValue › date variables <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:87:7 › edit form block schema settings › Convert reference to duplicate & Save as block template <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/pagination.test.ts:13:7 › pagination › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:300:9 › actions schema settings › view › linkage rules <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaSettings.test.ts:19:7 › collapse schema settings › supported options <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts:14:7 › bulk edit action setting › data will be updated && edit form configure <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/action.schemaSetting.test.ts:14:7 › action settings › refresh data on action <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings2.test.ts:13:7 › save as template › save as template, then delete it <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/actionAccessControl.test.ts:38:7 › Access control › access control with role  <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/linkageRules.test.ts:18:7 › linkage rules › form field depends on subtable fields with linkage rules <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaSettings.test.ts:14:7 › data will be updated && Assign field values && after successful submission › data will be updated && Assign field values && after successful submission <br/>
:warning: [chromium] › plugins/@nocobase/plugin-calendar/src/client/__e2e__/eventsBackgroundColor.test.ts:14:7 › Color field › basic <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow/src/client/__e2e__/updateRecordNode/updateInABatch1.test.ts:185:5 › Collection event add data trigger, filter single line text field not empty, common table single line text field data, set trigger node single line text field variable <br/>
:warning: [chromium] › plugins/@nocobase/plugin-data-source-main/src/client/__e2e__/fields/attachment/schemaSettings.test.ts:20:7 › form item & view form › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/lazyLoadAssociationFields.test.ts:100:7 › association fields › should be possible to change the value of the association field normally <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings.test.ts:1034:7 › actions schema settings › submit <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/dragAndDrop.test.ts:12:5 › tabs <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers should add bulk edit action › bulk edit in TableActionInitializers <br/>
:warning: [chromium] › plugins/@nocobase/plugin-gantt/src/client/__e2e__/drag.test.ts:13:5 › drag and adjust start time, end time, and progress <br/>

</details>

**1041 passed, 35 skipped, 71 did not run**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/13917347756/artifacts/2771166744). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/13917347756).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-19T09:05:45Z
body: ### Tests results for "E2E"
**1 fatal errors, not part of any test**
**15 failed**
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/button.test.ts:24:5 › Secondary confirmation
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:87:7 › edit form block schema settings › Convert reference to duplicate & Save as block template
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/block.test.ts:682:5 › Pre-QueryRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/block.test.ts:909:5 › Pre-CreateRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/block.test.ts:1362:5 › Pre-Manual block, create record form
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:248:5 › Pre-QueryRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:485:5 › Pre-CreateRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:735:5 › Pre-Manual block, create record form
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/block.test.ts:548:5 › Pre-QueryRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/block.test.ts:737:5 › Pre-CreateRecord block
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/block.test.ts:1117:5 › Pre-Manual block, create record form
:x: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:34:7 › grid card block schema settings › set the count of columns displayed in a row
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › core/client/src/modules/blocks/other-blocks/markdown/__e2e__/schemaSettings.test.ts:26:7 › markdown block schema settings › edit markdown

<details>
<summary><b>35 flaky</b></summary>
:warning: [chromium] › plugins/@nocobase/plugin-data-source-main/src/client/__e2e__/fields/richText/schemaSettings.test.ts:243:7 › form item & view form › supported options <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/action.schemaSetting.test.ts:14:7 › action settings › refresh data on action <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:56:7 › edit form block schema settings › Linkage rules <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/blockTemplate.test.ts:14:7 › block template › Ordinary block templates cannot be used to create association blocks, and vice versa <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:69:9 › actions schema settings › add new › edit button <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:754:9 › actions schema settings › popup › supported options <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/parentObject.test.ts:14:7 › variable: parent object › in default value <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/parentObject.test.ts:53:7 › variable: parent object › in linkage rules <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/actionAccessControl.test.ts:14:7 › Access control › popup、link、custom request support access control <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/SchemaToolbar.test.ts:13:7 › SchemaToolbar › initializer: block should be immediately visible after being added <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-custom-request/src/client/__e2e__/customRequest.test.ts:14:7 › custom request action › supported variables in custom request buttons across different blocks <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaSettings.test.ts:34:7 › direct duplicate & copy into the form and continue to fill in › copy into the form and continue to fill in <br/>
:warning: [chromium] › plugins/@nocobase/plugin-data-source-main/src/client/__e2e__/fields/color/schemaInitializer.test.ts:161:7 › table column & table › configure columns <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts:41:7 › multi data details block schema settings › support linkage rule <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:14:7 › grid card block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/basic.test.ts:31:7 › variables › API token <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaInitailizer.test.ts:13:7 › TableActionColumnInitializers & DetailsActionInitializers & ReadPrettyFormActionInitializers should add duplication action › duplication action in TableActionColumnInitializers <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-calendar/src/client/__e2e__/schemaInitializer.test.ts:14:7 › where can be added › page <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/submit/refreshData.test.ts:18:7 › Submit: should refresh data after submit › submit in reference template block <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings.test.ts:1034:7 › actions schema settings › submit <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:348:7 › configure actions column › column width <br/>
:warning: [chromium] › core/client/src/modules/fields/__e2e__/enableLink.test.ts:14:7 › enableLink › should immediately show drawer when clicking "Enable link" for the first time <br/>
:warning: [chromium] › core/client/src/modules/fields/component/DatePicker/__e2e__/schemaSettings.test.ts:47:5 › Date display format in table <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>
:warning: [chromium] › plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaSettings.test.ts:75:7 › configure params in gantt block › set end date field  <br/>
:warning: [chromium] › plugins/@nocobase/plugin-kanban/src/client/__e2e__/schemaSettings.test.ts:15:7 › configure setting › set the data scope <br/>
:warning: [chromium] › core/client/src/modules/actions/associate/__e2e__/associate.test.ts:13:5 › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:273:7 › creation form block schema settings › save block template & using block template <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings2.test.ts:198:7 › linkage rules › variable labels should be displayed normally <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/linkageStyleSettings.test.ts:13:7 › view › linkage style color <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:202:9 › table block schema settings › set default sorting rules › set default sorting rules <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/currentObject.test.ts:14:7 › variable: current object › in sub table <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-print/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › ReadPrettyFormActionInitializers & CalendarFormActionInitializers should add print action › print action in ReadPrettyFormActionInitializers <br/>

</details>

**1117 passed, 35 skipped**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/13940616982/artifacts/2778991582). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/13940616982).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-20T11:56:11Z
body: ### Tests results for "E2E"
**6 failed**
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:54:7 › creation form block schema settings › Save as block template & convert reference to duplicate
:x: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:14:7 › grid card block schema settings › supported options
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:69:9 › actions schema settings › add new › edit button
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs
:x: [chromium] › core/client/src/modules/blocks/other-blocks/markdown/__e2e__/schemaSettings.test.ts:26:7 › markdown block schema settings › edit markdown

<details>
<summary><b>34 flaky</b></summary>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:26:7 › edit form block schema settings › Edit block title <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:56:7 › edit form block schema settings › Linkage rules <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:24:7 › configure columns › action column & display collection fields & display association fields <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:65:9 › table block schema settings › enable drag and drop sorting › enable drag and drop sorting <br/>
:warning: [chromium] › core/client/src/modules/fields/component/DatePicker/__e2e__/schemaSettings.test.ts:47:5 › Date display format in table <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/basic.test.ts:14:7 › variables › linkage rules of table view action <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/actionAccessControl.test.ts:38:7 › Access control › access control with role  <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaInitailizer.test.ts:13:7 › TableActionColumnInitializers & DetailsActionInitializers & ReadPrettyFormActionInitializers should add duplication action › duplication action in TableActionColumnInitializers <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/dataBlocks-InitiationAndApproval/withdrawalPermitted.test.ts:26:5 › approval passed <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/link/basic.test.ts:19:7 › Link › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:273:7 › creation form block schema settings › save block template & using block template <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaSettings.test.ts:13:7 › list block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaSettings.test.ts:33:9 › collapse schema settings › connect data blocks › connecting two blocks of the same collection <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers should add bulk edit action › bulk edit in TableActionInitializers <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaSettings.test.ts:14:7 › data will be updated && Assign field values && after successful submission › data will be updated && Assign field values && after successful submission <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaSettings.test.ts:34:7 › direct duplicate & copy into the form and continue to fill in › copy into the form and continue to fill in <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-calendar/src/client/__e2e__/eventsBackgroundColor.test.ts:14:7 › Color field › basic <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow/src/client/__e2e__/collectionEventTrigger/workflowCRUD.test.ts:118:7 › Edit › edit Collection event name <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:61:7 › grid card block schema settings › set the count of columns displayed in a row of new version <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:81:9 › actions schema settings › add new › open mode <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:221:9 › actions schema settings › delete › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:288:9 › actions schema settings › view › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/form/__e2e__/autoFilterWhenSettingDefaultValue.test.ts:93:7 › filter form › with dataLoadingMode is manual <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/dragAndDrop.test.ts:12:5 › tabs <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>
:warning: [chromium] › plugins/@nocobase/plugin-gantt/src/client/__e2e__/drag.test.ts:13:5 › drag and adjust start time, end time, and progress <br/>
:warning: [chromium] › core/client/src/modules/actions/associate/__e2e__/associate.test.ts:13:5 › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts:20:7 › multi data details block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts:41:7 › multi data details block schema settings › support linkage rule <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/currentObject.test.ts:14:7 › variable: current object › in sub table <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts:14:7 › bulk edit action setting › data will be updated && edit form configure <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/relationField.test.ts:26:5 › Generic properties for o2m <br/>

</details>

**1167 passed, 37 skipped**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/13966685422/artifacts/2787799971). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/13966685422).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-20T13:02:03Z
body: ### Tests results for "E2E"
**6 failed**
:x: [chromium] › core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaSettings.test.ts:40:9 › filter block schema settings › connect data blocks › connecting two blocks of the same collection
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaSettings.test.ts:14:7 › data will be updated && Assign field values && after successful submission › data will be updated && Assign field values && after successful submission
:x: [chromium] › core/client/src/modules/actions/__e2e__/action.schemaSetting.test.ts:14:7 › action settings › refresh data on action
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:273:7 › creation form block schema settings › save block template & using block template
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs

<details>
<summary><b>24 flaky</b></summary>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaSettings.test.ts:20:7 › filter block schema settings › supported options <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts:14:7 › bulk edit action setting › data will be updated && edit form configure <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-block-iframe/src/client/__e2e__/inPopup.test.ts:14:7 › iframe in popup › open popup, then close it, that should work <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/dataBlocks-InitiationAndApproval/noWithdrawalPermitted.test.ts:26:5 › approval passed <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:65:9 › table block schema settings › enable drag and drop sorting › enable drag and drop sorting <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:262:9 › table block schema settings › connect data blocks › connecting two blocks connected by a relationship field <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/dragAndDrop.test.ts:12:5 › tabs <br/>
:warning: [chromium] › plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaSettings.test.ts:90:7 › configure params in gantt block › set time scale  <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:26:7 › creation form block schema settings › edit block title <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:59:9 › actions schema settings › add new › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:69:9 › actions schema settings › add new › edit button <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:268:9 › actions schema settings › refresh › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:288:9 › actions schema settings › view › supported options <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers  › TableActionInitializers should add bulk update <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/submit/refreshData.test.ts:18:7 › Submit: should refresh data after submit › submit in reference template block <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/setDataLoadingModeSettingsItem.test.ts:14:7 › setDataLoadingModeSettingsItem › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/form/__e2e__/autoFilterWhenSettingDefaultValue.test.ts:93:7 › filter form › with dataLoadingMode is manual <br/>
:warning: [chromium] › core/client/src/modules/blocks/other-blocks/markdown/__e2e__/schemaSettings.test.ts:26:7 › markdown block schema settings › edit markdown <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/currentRecord.test.ts:14:7 › variable: Current Record › Current record should be consistent with current form field values <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-custom-request/src/client/__e2e__/customRequest.test.ts:14:7 › custom request action › supported variables in custom request buttons across different blocks <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/relationField.test.ts:26:5 › Generic properties for o2m <br/>

</details>

**1177 passed, 37 skipped**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/13968708673/artifacts/2788200408). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/13968708673).
author_association: NONE
user: login: CLAassistant
created_at: 2025-03-21T05:08:18Z
body: [![CLA assistant check](https://cla-assistant.io/pull/badge/signed)](https://cla-assistant.io/nocobase/nocobase?pullRequest=6441) <br/>All committers have signed the CLA.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-21T07:02:03Z
body: ### Tests results for "E2E"
**4 failed**
:x: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts:41:7 › multi data details block schema settings › support linkage rule
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/dataBlocks-InitiationAndApproval/noWithdrawalPermitted.test.ts:26:5 › approval passed

<details>
<summary><b>40 flaky</b></summary>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-custom-action-trigger/src/client/__e2e__/configuration.test.ts:344:7 › Workflow Enable Disable › Form event Workflow Add Data Trigger Disable Enable Post Trigger <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings2.test.ts:198:7 › linkage rules › variable labels should be displayed normally <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/hideColumn.test.ts:14:7 › hide column › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/pagination.test.ts:13:7 › pagination › basic <br/>
:warning: [chromium] › core/client/src/modules/fields/component/DatePicker/__e2e__/schemaSettings.test.ts:47:5 › Date display format in table <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/button.test.ts:24:5 › Secondary confirmation <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/field.test.ts:25:5 › Generic properties for single-line text <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/submit/refreshData.test.ts:18:7 › Submit: should refresh data after submit › submit in reference template block <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/setDataLoadingModeSettingsItem.test.ts:14:7 › setDataLoadingModeSettingsItem › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:14:7 › grid card block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaSettings.test.ts:33:9 › collapse schema settings › connect data blocks › connecting two blocks of the same collection <br/>
:warning: [chromium] › core/client/src/modules/blocks/other-blocks/markdown/__e2e__/schemaSettings.test.ts:13:7 › markdown block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/basic.test.ts:14:7 › variables › linkage rules of table view action <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/basic.test.ts:31:7 › variables › API token <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:133:5 › plugin settings permissions <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-custom-request/src/client/__e2e__/customRequest.test.ts:14:7 › custom request action › supported variables in custom request buttons across different blocks <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts:20:7 › multi data details block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:26:7 › creation form block schema settings › edit block title <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:87:7 › edit form block schema settings › Convert reference to duplicate & Save as block template <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:59:9 › actions schema settings › add new › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:268:9 › actions schema settings › refresh › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:288:9 › actions schema settings › view › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:300:9 › actions schema settings › view › linkage rules <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:775:9 › actions schema settings › duplicate › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings2.test.ts:13:7 › save as template › save as template, then delete it <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaSettings.test.ts:40:9 › filter block schema settings › connect data blocks › connecting two blocks of the same collection <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers should add bulk edit action › bulk edit in TableActionInitializers <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/action.schemaSetting.test.ts:14:7 › action settings › refresh data on action <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings.test.ts:1034:7 › actions schema settings › submit <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:348:7 › configure actions column › column width <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:65:9 › table block schema settings › enable drag and drop sorting › enable drag and drop sorting <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:202:9 › table block schema settings › set default sorting rules › set default sorting rules <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:262:9 › table block schema settings › connect data blocks › connecting two blocks connected by a relationship field <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/dragAndDrop.test.ts:12:5 › tabs <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/actionAccessControl.test.ts:38:7 › Access control › access control with role  <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts:14:7 › bulk edit action setting › data will be updated && edit form configure <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-gantt/src/client/__e2e__/drag.test.ts:13:5 › drag and adjust start time, end time, and progress <br/>

</details>

**1163 passed, 37 skipped**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/13985202877/artifacts/2794026480). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/13985202877).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-24T04:07:59Z
body: ### Tests results for "E2E"
**5 failed**
:x: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts:20:7 › multi data details block schema settings › supported options
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/actions/linkage.test.ts:14:5 › action linkage by row data
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs
:x: [chromium] › core/client/src/modules/actions/__e2e__/action.schemaSetting.test.ts:14:7 › action settings › refresh data on action

<details>
<summary><b>36 flaky</b></summary>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts:41:7 › multi data details block schema settings › support linkage rule <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/setDataLoadingModeSettingsItem.test.ts:14:7 › setDataLoadingModeSettingsItem › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:26:7 › creation form block schema settings › edit block title <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:54:7 › creation form block schema settings › Save as block template & convert reference to duplicate <br/>
:warning: [chromium] › core/client/src/modules/fields/__e2e__/enableLink.test.ts:14:7 › enableLink › should immediately show drawer when clicking "Enable link" for the first time <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/schemaSettings.test.ts:18:7 › page schema settings › enable page header & display page title & edit page title & enable page tabs <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaSettings.test.ts:34:7 › direct duplicate & copy into the form and continue to fill in › copy into the form and continue to fill in <br/>
:warning: [chromium] › plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaSettings.test.ts:48:7 › configure params in gantt block › set title field <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow/src/client/__e2e__/ScheduleEventTrigger/workflowCRUD.test.ts:46:7 › Add new › add new Schedule event <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/relationField.test.ts:585:5 › Details block, o2m relational field, The field component sets sub-table1 <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/dataBlocks-InitiationAndApproval/noWithdrawalPermitted.test.ts:26:5 › approval passed <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/relationField.test.ts:26:5 › Generic properties for o2m <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/submit/refreshData.test.ts:18:7 › Submit: should refresh data after submit › submit in reference template block <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/hideColumn.test.ts:14:7 › hide column › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/linkageStyleSettings.test.ts:13:7 › view › linkage style color <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:288:9 › actions schema settings › view › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:1015:7 › table column schema settings › fixed column <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaSettings.test.ts:19:7 › collapse schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/basic.test.ts:14:7 › variables › linkage rules of table view action <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers should add bulk edit action › bulk edit in TableActionInitializers <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-custom-request/src/client/__e2e__/customRequest.test.ts:14:7 › custom request action › supported variables in custom request buttons across different blocks <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings.test.ts:1048:9 › actions schema settings › customize: save record › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:348:7 › configure actions column › column width <br/>
:warning: [chromium] › core/client/src/modules/menu/__e2e__/schemaSettings.test.ts:48:7 › link page menu schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/dragAndDrop.test.ts:12:5 › tabs <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:90:5 › allows to clear cache,reboot application  <br/>
:warning: [chromium] › plugins/@nocobase/plugin-file-manager/src/client/__e2e__/block.test.ts:53:7 › file collection block › correctly size <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/field.test.ts:25:5 › Generic properties for single-line text <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaSettings.test.ts:13:7 › list block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/user-center/__e2e__/settings.test.ts:12:5 › switch role <br/>
:warning: [chromium] › core/client/src/schema-component/antd/association-field/__e2e__/tag.test.ts:14:7 › tag in details block › should refresh block immediately after data changes <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/SchemaToolbar.test.ts:13:7 › SchemaToolbar › initializer: block should be immediately visible after being added <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts:14:7 › bulk edit action setting › data will be updated && edit form configure <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-calendar/src/client/__e2e__/eventsBackgroundColor.test.ts:14:7 › Color field › basic <br/>

</details>

**1166 passed, 37 skipped**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/14026041290/artifacts/2805030150). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/14026041290).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-24T11:49:07Z
body: ### Tests results for "E2E"
**6 failed**
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/actions/linkage.test.ts:14:5 › action linkage by row data
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:87:7 › edit form block schema settings › Convert reference to duplicate & Save as block template
:x: [chromium] › core/client/src/schema-settings/__e2e__/actionAccessControl.test.ts:14:7 › Access control › popup、link、custom request support access control
:x: [chromium] › core/client/src/modules/blocks/filter-blocks/collapse/__e2e__/schemaSettings.test.ts:19:7 › collapse schema settings › supported options

<details>
<summary><b>29 flaky</b></summary>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/action.schemaSetting.test.ts:14:7 › action settings › refresh data on action <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaSettings.test.ts:13:7 › list block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:348:7 › configure actions column › column width <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-custom-request/src/client/__e2e__/schemaSettings.test.ts:13:7 › custom request action › edit button <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:26:7 › edit form block schema settings › Edit block title <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:56:7 › edit form block schema settings › Linkage rules <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/form/__e2e__/autoFilterWhenSettingDefaultValue.test.ts:93:7 › filter form › with dataLoadingMode is manual <br/>
:warning: [chromium] › core/client/src/schema-component/antd/association-field/__e2e__/tag.test.ts:14:7 › tag in details block › should refresh block immediately after data changes <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:90:5 › allows to clear cache,reboot application  <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers  › TableActionInitializers should add bulk update <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/button.test.ts:24:5 › Secondary confirmation <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/submit/refreshData.test.ts:18:7 › Submit: should refresh data after submit › submit in reference template block <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:14:7 › grid card block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:172:9 › actions schema settings › bulk delete › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:288:9 › actions schema settings › view › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:300:9 › actions schema settings › view › linkage rules <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:262:9 › table block schema settings › connect data blocks › connecting two blocks connected by a relationship field <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:293:9 › table block schema settings › connect data blocks › connecting two blocks connected by a foreign key <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers should add bulk edit action › bulk edit in TableActionInitializers <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-calendar/src/client/__e2e__/popup.test.ts:14:7 › Calendar popup › clicking and closing nested popups <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:54:7 › creation form block schema settings › Save as block template & convert reference to duplicate <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:118:7 › creation form block schema settings › save as block Template <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/tree/schemaSettings.test.ts:13:7 › tree table block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/schemaSettings.test.ts:18:7 › page schema settings › enable page header & display page title & edit page title & enable page tabs <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/parentObject.test.ts:14:7 › variable: parent object › in default value <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/parentObject.test.ts:53:7 › variable: parent object › in linkage rules <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>

</details>

**1172 passed, 37 skipped**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/14033051357/artifacts/2807163998). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/14033051357).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-25T10:01:53Z
body: ### Tests results for "E2E"
**10 failed**
:x: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:14:7 › grid card block schema settings › supported options
:x: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:61:7 › grid card block schema settings › set the count of columns displayed in a row of new version
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/actions/linkage.test.ts:14:5 › action linkage by row data
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings.test.ts:1048:9 › actions schema settings › customize: save record › supported options
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:26:7 › edit form block schema settings › Edit block title
:x: [chromium] › core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaSettings.test.ts:13:7 › list block schema settings › supported options
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs
:x: [authSetup] › ../storage/playwright/tests/auth.setup.ts:4:6 › admin
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/button.test.ts:24:5 › Secondary confirmation

<details>
<summary><b>29 flaky</b></summary>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/action.schemaSetting.test.ts:14:7 › action settings › refresh data on action <br/>
:warning: [chromium] › core/client/src/modules/actions/associate/__e2e__/associate.test.ts:13:5 › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:34:7 › grid card block schema settings › set the count of columns displayed in a row <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/hideColumn.test.ts:14:7 › hide column › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:24:7 › configure columns › action column & display collection fields & display association fields <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/dragAndDrop.test.ts:12:5 › tabs <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/currentRecord.test.ts:14:7 › variable: Current Record › Current record should be consistent with current form field values <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/actionAccessControl.test.ts:14:7 › Access control › popup、link、custom request support access control <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaSettings.test.ts:14:7 › bulk edit action setting › data will be updated && edit form configure <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-file-manager/src/client/__e2e__/block.test.ts:53:7 › file collection block › correctly size <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/associationForm.test.ts:32:7 › association form block › form (Add new) <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:81:9 › actions schema settings › add new › open mode <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:172:9 › actions schema settings › bulk delete › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:221:9 › actions schema settings › delete › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:233:9 › actions schema settings › delete › edit button <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:796:9 › actions schema settings › update record › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaSettings.test.ts:20:7 › filter block schema settings › supported options <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-duplicate/src/client/__e2e__/schemaInitailizer.test.ts:13:7 › TableActionColumnInitializers & DetailsActionInitializers & ReadPrettyFormActionInitializers should add duplication action › duplication action in TableActionColumnInitializers <br/>
:warning: [chromium] › plugins/@nocobase/plugin-gantt/src/client/__e2e__/schemaSettings.test.ts:26:7 › configure params in gantt block › set data scope in gantt block <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings1.test.ts:54:7 › creation form block schema settings › Save as block template & convert reference to duplicate <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-edit/schemaSettings.test.ts:87:7 › edit form block schema settings › Convert reference to duplicate & Save as block template <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings1.test.ts:262:9 › table block schema settings › connect data blocks › connecting two blocks connected by a relationship field <br/>
:warning: [chromium] › core/client/src/modules/page/__e2e__/schemaSettings.test.ts:86:7 › tabs schema settings › edit <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/configuration.test.ts:420:7 › Configuration page copy to new version › Copy the Form event of the Configuration Trigger node <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/setDataLoadingModeSettingsItem.test.ts:14:7 › setDataLoadingModeSettingsItem › basic <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers should add bulk edit action › bulk edit in TableActionInitializers <br/>
:warning: [chromium] › plugins/@nocobase/plugin-kanban/src/client/__e2e__/schemaSettings.test.ts:15:7 › configure setting › set the data scope <br/>

</details>

**1077 passed, 37 skipped, 91 did not run**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/14055229532/artifacts/2814469109). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/14055229532).
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-26T06:37:21Z
body: ### Tests results for "E2E"
**2 fatal errors, not part of any test**
**30 failed**
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:30:5 › 3 in parallel, 2 passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:1963:5 › Serial of 3, first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:303:5 › 3 in parallel, first one, approval reject
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:743:5 › Serial of 3,  3 passed
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:996:5 › Serial of 3, first one, approval reject
:x: [chromium] › core/client/src/modules/fields/component/Select/__e2e__/selectOptionsInLinkageRule.test.ts:14:7 › options of  Select field in linkage rule › options change with linkage rule 
:x: [chromium] › core/client/src/modules/popup/__e2e__/schemaInitializer1.test.ts:228:7 › where to open a popup and what can be added to it › association link after reload page
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:735:5 › Pre-Manual block, create record form
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:430:7 › orMode › Select assignees, Variable 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:652:7 › orMode › Query assignees, 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/approver.test.ts:876:7 › orMode › Select assignees, Fixed 1 person; Query assignees, 2 persons,passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/formConfig/field.test.ts:583:5 › Pre-Manual block, create record form
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:464:7 › orMode › Select assignees, Variable 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:705:7 › orMode › Query assignees, 3 persons, passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:948:7 › orMode › Select assignees, Fixed 1 person; Query assignees, 2 persons,passed.
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/orMode.test.ts:469:5 › 3 in parallel, first one, approval returned
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/orMode.test.ts:689:5 › Serial of 3, first one, approval passed
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer1.test.ts:30:7 › where table block can be added › popup
:x: [chromium] › core/client/src/modules/page/__e2e__/router.test.ts:14:7 › router › page tabs
:x: [chromium] › plugins/@nocobase/plugin-action-custom-request/src/client/__e2e__/schemaSettings.test.ts:13:7 › custom request action › edit button
:x: [chromium] › plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/datablocks.test.ts:154:7 › field data › Collection event to add a data trigger, get aggregate node data
:x: [chromium] › plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/updateRecordForm.test.ts:574:7 › field data update › Collection event to add a data trigger, update multiple select data
:x: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/schemaSettings2.test.ts:19:7 › linkage rules › basic usage
:x: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/votingMode.test.ts:735:5 › Serial of 3,  2 passed
:x: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaInitializer.test.ts:31:7 › where grid card block can be added › popup
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/actions/linkage.test.ts:14:5 › action linkage by row data
:x: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:292:7 › configure actions column › view & edit & delete & duplicate & customize
:x: [chromium] › core/client/src/modules/blocks/filter-blocks/__e2e__/schemaInitializer.test.ts:98:7 › where filter block can be added › popup
:x: [chromium] › plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaSettings.test.ts:14:7 › data will be updated && Assign field values && after successful submission › data will be updated && Assign field values && after successful submission
:x: [chromium] › plugins/@nocobase/plugin-data-visualization/src/client/__e2e__/defaultValue.test.ts:13:7 › defaultValue › date variables

<details>
<summary><b>69 flaky</b></summary>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:313:5 › 3 in parallel, Rejection is the end, 2 reject <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/votingMode.test.ts:1691:5 › Serial of 3, 2 reject <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:29:5 › 3 in parallel, 3 passed <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/andMode.test.ts:523:5 › 3 in parallel, first one, approval returned <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/button.test.ts:24:5 › Secondary confirmation <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaInitializer.test.ts:22:7 › where multi data details block can be added › page <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/form/__e2e__/form-create/lazyLoadAssociationFields.test.ts:100:7 › association fields › should be possible to change the value of the association field normally <br/>
:warning: [chromium] › core/client/src/modules/blocks/filter-blocks/form/__e2e__/schemaSettings.test.ts:20:7 › filter block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/fields/component/TimePicker/__e2e__/SchemaSettings.test.ts:14:5 ›  time format in form <br/>
:warning: [chromium] › core/client/src/modules/menu/__e2e__/schemaSettings.test.ts:48:7 › link page menu schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/popup/__e2e__/schemaInitializer.test.ts:129:7 › add blocks to the popup › only support association fields <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/basic.test.ts:31:7 › variables › API token <br/>
:warning: [chromium] › plugins/@nocobase/plugin-gantt/src/client/__e2e__/drag.test.ts:13:5 › drag and adjust start time, end time, and progress <br/>
:warning: [chromium] › plugins/@nocobase/plugin-mobile/src/client/__e2e__/zIndex.test.ts:86:7 › zIndex › modal of Assign field values and modal of Bind workflows <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:32:5 › Details block <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/field.test.ts:485:5 › Pre-CreateRecord block <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/approver.test.ts:246:7 › orMode › Select assignees, Fixed 2 person, passed. <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/orMode.test.ts:29:5 › 3 in parallel, first one, approval passed <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/orMode.test.ts:249:5 › 3 in parallel, first one, approval reject <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/details-multi/__e2e__/schemaSettings.test.ts:20:7 › multi data details block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/hideColumn.test.ts:14:7 › hide column › basic <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/linkageStyleSettings.test.ts:13:7 › view › linkage style color <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer1.test.ts:85:7 › where table block can be added › verify assiciation block x-acl-action <br/>
:warning: [chromium] › core/client/src/modules/variable/__e2e__/parentObject.test.ts:14:7 › variable: parent object › in default value <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:12:5 › allows to configure interface <br/>
:warning: [chromium] › plugins/@nocobase/plugin-acl/src/client/__e2e__/configure.test.ts:133:5 › plugin settings permissions <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-update/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers  › TableActionInitializers should add bulk update <br/>
:warning: [chromium] › plugins/@nocobase/plugin-auth/src/client/__e2e__/auth.test.ts:21:7 › auth › register <br/>
:warning: [chromium] › plugins/@nocobase/plugin-block-iframe/src/client/__e2e__/inPopup.test.ts:14:7 › iframe in popup › open popup, then close it, that should work <br/>
:warning: [chromium] › plugins/@nocobase/plugin-calendar/src/client/__e2e__/schemaInitializer.test.ts:28:7 › where can be added › association block in popup <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/formConfig/relationField.test.ts:26:5 › Generic properties for o2m <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/approvalCentre-InitiationAndApproval/withdrawalPermitted.test.ts:157:5 › approval returned <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/approvalCentre-InitiationAndApproval/withdrawalPermitted.test.ts:454:5 › approval withdrawn, submitted for approval, approval reject <br/>
:warning: [chromium] › plugins/@nocobase/plugin-data-source-main/src/client/__e2e__/fields/checkbox/schemaInitializer.test.ts:128:7 › table column & table › configure columns <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/datablocks2.test.ts:123:7 › field data › Collection event to add a data trigger, get calculation node data <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow-parallel/src/client/__e2e__/parallelBranch2.test.ts:307:7 › Any succeeded › Branches all failed <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow/src/client/__e2e__/calculationNode/formulaEngine.test.ts:31:5 › Collection event add data trigger, get trigger node single line text variable <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/updateRecordForm.test.ts:215:7 › field data update › Collection event to add a data trigger, update checkbox data <br/>
:warning: [chromium] › plugins/@nocobase/plugin-data-source-main/src/client/__e2e__/fields/createdAt/schemaInitializer.test.ts:117:7 › table column & table › configure columns <br/>
:warning: [chromium] › core/client/src/modules/actions/__e2e__/bulk-destroy/basic.test.ts:34:7 › bulk-destroy › Secondary confirmation <br/>
:warning: [chromium] › core/client/src/modules/actions/disassociate/__e2e__/disassociate.test.ts:13:5 › basic <br/>
:warning: [chromium] › core/client/src/modules/fields/__e2e__/styleLinkageRule.test.ts:14:7 › field style linkage rule › field style  support Color、Background Color、Text Align、Font Size、Font Weight、Font Style <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/schemaInitailizer.test.ts:14:7 › TableActionInitializers & GanttActionInitializers & MapActionInitializers should add bulk edit action › bulk edit in TableActionInitializers <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/customFormBlocks1.test.ts:324:7 › field data entry › Collection event to add a data trigger, entering checkbox group data <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/updateRecordForm2.test.ts:354:7 › field data update › Collection event to add a data trigger, update mobile phone number data <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/formConfig/block.test.ts:1362:5 › Pre-Manual block, create record form <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:30:5 › 3 in parallel, first one, approval passed <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:560:5 › 3 in parallel, first one, approval reject <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1082:5 › Serial of 3, first one, approval passed <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1339:5 › Serial of 3, Rejection is the end, first one, approval reject <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/branchMode/processConfig/orMode.test.ts:1858:5 › Serial of 3,  first one, approval returned <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/votingMode.test.ts:29:5 › 3 in parallel, 2 passed <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/votingMode.test.ts:272:5 › 3 in parallel, 2 reject <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/votingMode.test.ts:514:5 › 3 in parallel, first one, approval returned <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/votingMode.test.ts:970:5 › Serial of 3, 2 reject <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/passthroughMode/processConfig/votingMode.test.ts:1202:5 › Serial of 3, first one, approval returned <br/>
:warning: [chromium] › pro-plugins/@nocobase/plugin-workflow-approval/src/client/__e2e__/triggerNodeConfig/processConfig/dataBlocks-InitiationAndApproval/noWithdrawalPermitted.test.ts:26:5 › approval passed <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaInitializer.test.ts:23:7 › where grid card block can be added › page <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:14:7 › grid card block schema settings › supported options <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/grid-card/__e2e__/schemaSettings.test.ts:35:7 › grid card block schema settings › set the count of columns displayed in a row <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaInitializer.test.ts:24:7 › configure columns › action column & display collection fields & display association fields <br/>
:warning: [chromium] › core/client/src/modules/blocks/data-blocks/table/__e2e__/schemaSettings.test.ts:268:9 › actions schema settings › refresh › supported options <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/actionAccessControl.test.ts:14:7 › Access control › popup、link、custom request support access control <br/>
:warning: [chromium] › core/client/src/schema-settings/__e2e__/SchemaToolbar.test.ts:13:7 › SchemaToolbar › initializer: block should be immediately visible after being added <br/>
:warning: [chromium] › plugins/@nocobase/plugin-action-bulk-edit/src/client/__e2e__/popup.test.ts:14:7 › popup of bulk edit › the Add block button in drawer should be visible <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow/src/client/__e2e__/updateRecordNode/updateOneByOne1.test.ts:186:5 › Collection event add data trigger, filter single line text field not empty, common table single line text field data, set trigger node single line text field variable <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/updateRecordForm1.test.ts:28:7 › field data update › Collection event to add a data trigger, update radio group data <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow-manual/src/client/__e2e__/updateRecordForm3.test.ts:191:7 › field data update › Collection event to add a data trigger, update integer data <br/>
:warning: [chromium] › plugins/@nocobase/plugin-workflow-parallel/src/client/__e2e__/parallelBranch1.test.ts:166:7 › All succeeded › Branches 1 and 2 succeed, 3 fail <br/>

</details>

**1092 passed, 48 skipped, 7 did not run**
:heavy_check_mark::heavy_check_mark::heavy_check_mark:


Full [HTML report](https://github.com/nocobase/nocobase/actions/runs/14075372951/artifacts/2821383683). Merge [workflow run](https://github.com/nocobase/nocobase/actions/runs/14075372951).
author_association: NONE