@@ -5,6 +5,9 @@ import { reorderColumns } from 'helpers/e2e/reorderColumns.js'
5
5
import * as path from 'path'
6
6
import { fileURLToPath } from 'url'
7
7
8
+ import type { PayloadTestSDK } from '../helpers/sdk/index.js'
9
+ import type { Config } from './payload-types.js'
10
+
8
11
import {
9
12
ensureCompilationIsDone ,
10
13
exactText ,
@@ -20,6 +23,9 @@ import { categoriesSlug, postsSlug, uploadsSlug } from './shared.js'
20
23
const filename = fileURLToPath ( import . meta. url )
21
24
const dirname = path . dirname ( filename )
22
25
26
+ let payload : PayloadTestSDK < Config >
27
+ let serverURL : string
28
+
23
29
test . describe ( 'Admin Panel' , ( ) => {
24
30
let page : Page
25
31
let categoriesURL : AdminUrlUtil
@@ -28,8 +34,9 @@ test.describe('Admin Panel', () => {
28
34
29
35
test . beforeAll ( async ( { browser } , testInfo ) => {
30
36
testInfo . setTimeout ( TEST_TIMEOUT_LONG )
31
-
32
- const { payload, serverURL } = await initPayloadE2ENoConfig ( { dirname } )
37
+ ; ( { payload, serverURL } = await initPayloadE2ENoConfig < Config > ( {
38
+ dirname,
39
+ } ) )
33
40
postsURL = new AdminUrlUtil ( serverURL , postsSlug )
34
41
categoriesURL = new AdminUrlUtil ( serverURL , categoriesSlug )
35
42
uploadsURL = new AdminUrlUtil ( serverURL , uploadsSlug )
@@ -59,8 +66,44 @@ test.describe('Admin Panel', () => {
59
66
const joinField = page . locator ( '#field-relatedPosts.field-type.join' )
60
67
await expect ( joinField ) . toBeVisible ( )
61
68
await expect ( joinField . locator ( '.relationship-table table' ) ) . toBeVisible ( )
62
- const columns = await joinField . locator ( '.relationship-table tbody tr' ) . count ( )
63
- expect ( columns ) . toBe ( 3 )
69
+ const rows = joinField . locator ( '.relationship-table tbody tr' )
70
+ await expect ( rows ) . toHaveCount ( 3 )
71
+ } )
72
+
73
+ test ( 'should apply defaultLimit and defaultSort on relationship table' , async ( ) => {
74
+ const result = await payload . find ( {
75
+ collection : categoriesSlug ,
76
+ limit : 1 ,
77
+ } )
78
+ const category = result . docs [ 0 ]
79
+ // seed additional posts to test defaultLimit (5)
80
+ await payload . create ( {
81
+ collection : postsSlug ,
82
+ data : {
83
+ title : 'a' ,
84
+ category : category . id ,
85
+ } ,
86
+ } )
87
+ await payload . create ( {
88
+ collection : postsSlug ,
89
+ data : {
90
+ title : 'b' ,
91
+ category : category . id ,
92
+ } ,
93
+ } )
94
+ await payload . create ( {
95
+ collection : postsSlug ,
96
+ data : {
97
+ title : 'z' ,
98
+ category : category . id ,
99
+ } ,
100
+ } )
101
+ await navigateToDoc ( page , categoriesURL )
102
+ const joinField = page . locator ( '#field-relatedPosts.field-type.join' )
103
+ await expect ( joinField . locator ( '.row-1 > .cell-title' ) ) . toContainText ( 'z' )
104
+ await expect ( joinField . locator ( '.paginator > .clickable-arrow--right' ) ) . toBeVisible ( )
105
+ const rows = joinField . locator ( '.relationship-table tbody tr' )
106
+ await expect ( rows ) . toHaveCount ( 5 )
64
107
} )
65
108
66
109
test ( 'should render join field for hidden posts' , async ( ) => {
0 commit comments