diff --git a/test/fields/collections/Row/index.ts b/test/fields/collections/Row/index.ts new file mode 100644 index 0000000000..f081e2e7e6 --- /dev/null +++ b/test/fields/collections/Row/index.ts @@ -0,0 +1,26 @@ +import type { CollectionConfig } from '../../../../src/collections/config/types'; + +export const rowFieldsSlug = 'row-fields'; + +const RowFields: CollectionConfig = { + slug: rowFieldsSlug, + versions: true, + admin: { + defaultColumns: ['title', 'id'], + }, + fields: [ + { + type: 'row', + fields: [ + { + name: 'title', + label: 'Title within a row', + type: 'text', + required: true, + }, + ], + }, + ], +}; + +export default RowFields; diff --git a/test/fields/collections/Upload2/index.ts b/test/fields/collections/Upload2/index.ts index 8cac738663..9c2989c97c 100644 --- a/test/fields/collections/Upload2/index.ts +++ b/test/fields/collections/Upload2/index.ts @@ -6,6 +6,10 @@ const Uploads2: CollectionConfig = { upload: { staticDir: path.resolve(__dirname, './uploads2'), }, + labels: { + singular: 'Upload 2', + plural: 'Uploads 2', + }, fields: [ { type: 'text', diff --git a/test/fields/config.ts b/test/fields/config.ts index 8c85fad465..1332b99850 100644 --- a/test/fields/config.ts +++ b/test/fields/config.ts @@ -24,6 +24,7 @@ import RelationshipFields from './collections/Relationship'; import RadioFields, { radiosDoc } from './collections/Radio'; import Uploads2 from './collections/Upload2'; import Uploads3 from './collections/Uploads3'; +import RowFields from './collections/Row'; export default buildConfig({ admin: { @@ -47,6 +48,7 @@ export default buildConfig({ DateFields, RadioFields, GroupFields, + RowFields, IndexedFields, JSONFields, NumberFields, diff --git a/test/fields/e2e.spec.ts b/test/fields/e2e.spec.ts index cfa9c7dd4b..9fdc472469 100644 --- a/test/fields/e2e.spec.ts +++ b/test/fields/e2e.spec.ts @@ -731,4 +731,32 @@ describe('fields', () => { await expect(page.locator('.list-drawer__header-text')).toContainText('Uploads 3'); }); }); + + describe('row', () => { + let url: AdminUrlUtil; + beforeAll(() => { + url = new AdminUrlUtil(serverURL, 'row-fields'); + }); + + test('should show row fields as table columns', async () => { + await page.goto(url.create); + + // fill the required fields, including the row field + const titleInput = page.locator('input#field-title'); + await titleInput.fill('Test Row'); + await page.locator('#action-save').click(); + await wait(200); + await expect(page.locator('.Toastify')).toContainText('successfully'); + + // ensure the 'title' field is visible in the table header + await page.goto(url.list); + const titleHeading = page.locator('th#heading-title'); + await expect(titleHeading).toBeVisible(); + + // ensure the 'title' field shows the correct value in the table cell + const titleCell = page.locator('.row-1 td.cell-title'); + await expect(titleCell).toBeVisible(); + await expect(titleCell).toContainText('Test Row'); + }); + }); });