@@ -51,6 +51,7 @@ let payload: PayloadTestSDK<Config>
51
51
import { navigateToDoc } from 'helpers/e2e/navigateToDoc.js'
52
52
import { openDocControls } from 'helpers/e2e/openDocControls.js'
53
53
import path from 'path'
54
+ import { wait } from 'payload/shared'
54
55
import { fileURLToPath } from 'url'
55
56
56
57
import type { PayloadTestSDK } from '../../../helpers/sdk/index.js'
@@ -721,25 +722,31 @@ describe('General', () => {
721
722
'Deleted 3 Posts successfully.' ,
722
723
)
723
724
724
- await expect ( page . locator ( '.collection-list__no-results' ) ) . toBeVisible ( )
725
+ // Poll until router has refreshed
726
+ await expect . poll ( ( ) => page . locator ( '.collection-list__no-results' ) . isVisible ( ) ) . toBeTruthy ( )
725
727
} )
726
728
727
729
test ( 'should bulk delete with filters and across pages' , async ( ) => {
728
730
await deleteAllPosts ( )
729
- await Promise . all ( [ createPost ( { title : 'Post 1' } ) , createPost ( { title : 'Post 2' } ) ] )
731
+
732
+ Array . from ( { length : 6 } ) . forEach ( async ( _ , i ) => {
733
+ await createPost ( { title : `Post ${ i + 1 } ` } )
734
+ } )
735
+
730
736
await page . goto ( postsUrl . list )
731
- await page . locator ( '#search-filter-input' ) . fill ( 'Post 1 ' )
732
- await expect ( page . locator ( '.table table > tbody > tr' ) ) . toHaveCount ( 1 )
737
+ await page . locator ( '#search-filter-input' ) . fill ( 'Post' )
738
+ await expect ( page . locator ( '.table table > tbody > tr' ) ) . toHaveCount ( 5 )
733
739
await page . locator ( 'input#select-all' ) . check ( )
734
- await page . locator ( 'button.list-selection__button ' ) . click ( )
740
+ await page . locator ( 'button#select-all-across-pages ' ) . click ( )
735
741
await page . locator ( '.delete-documents__toggle' ) . click ( )
736
742
await page . locator ( '#delete-posts #confirm-action' ) . click ( )
737
743
738
744
await expect ( page . locator ( '.payload-toast-container .toast-success' ) ) . toHaveText (
739
- 'Deleted 1 Post successfully.' ,
745
+ 'Deleted 6 Posts successfully.' ,
740
746
)
741
747
742
- await expect ( page . locator ( '.table table > tbody > tr' ) ) . toHaveCount ( 1 )
748
+ // Poll until router has refreshed
749
+ await expect . poll ( ( ) => page . locator ( '.table table > tbody > tr' ) . count ( ) ) . toBe ( 0 )
743
750
} )
744
751
745
752
test ( 'should bulk update' , async ( ) => {
@@ -835,17 +842,27 @@ describe('General', () => {
835
842
expect ( updatedPost . docs [ 0 ] . defaultValueField ) . toBe ( 'not the default value' )
836
843
} )
837
844
845
+ test ( 'should not show "select all across pages" button if already selected all' , async ( ) => {
846
+ await deleteAllPosts ( )
847
+ await createPost ( { title : `Post 1` } )
848
+ await page . goto ( postsUrl . list )
849
+ await page . locator ( 'input#select-all' ) . check ( )
850
+ await expect ( page . locator ( 'button#select-all-across-pages' ) ) . toBeHidden ( )
851
+ } )
852
+
838
853
test ( 'should bulk update with filters and across pages' , async ( ) => {
839
854
// First, delete all posts created by the seed
840
855
await deleteAllPosts ( )
841
- const post1Title = 'Post 1'
842
- await Promise . all ( [ createPost ( { title : post1Title } ) , createPost ( { title : 'Post 2' } ) ] )
843
- const updatedPostTitle = `${ post1Title } (Updated)`
856
+
857
+ Array . from ( { length : 6 } ) . forEach ( async ( _ , i ) => {
858
+ await createPost ( { title : `Post ${ i + 1 } ` } )
859
+ } )
860
+
844
861
await page . goto ( postsUrl . list )
845
- await page . locator ( '#search-filter-input' ) . fill ( 'Post 1 ' )
846
- await expect ( page . locator ( '.table table > tbody > tr' ) ) . toHaveCount ( 1 )
862
+ await page . locator ( '#search-filter-input' ) . fill ( 'Post' )
863
+ await expect ( page . locator ( '.table table > tbody > tr' ) ) . toHaveCount ( 5 )
847
864
await page . locator ( 'input#select-all' ) . check ( )
848
- await page . locator ( 'button.list-selection__button ' ) . click ( )
865
+ await page . locator ( 'button#select-all-across-pages ' ) . click ( )
849
866
await page . locator ( '.edit-many__toggle' ) . click ( )
850
867
await page . locator ( '.field-select .rs__control' ) . click ( )
851
868
@@ -857,23 +874,29 @@ describe('General', () => {
857
874
await titleOption . click ( )
858
875
const titleInput = page . locator ( '#field-title' )
859
876
await expect ( titleInput ) . toBeVisible ( )
860
- await titleInput . fill ( updatedPostTitle )
877
+ const updatedTitle = `Post (Updated)`
878
+ await titleInput . fill ( updatedTitle )
861
879
862
880
await page . locator ( '.form-submit button[type="submit"].edit-many__publish' ) . click ( )
863
881
await expect ( page . locator ( '.payload-toast-container .toast-success' ) ) . toContainText (
864
- 'Updated 1 Post successfully.' ,
882
+ 'Updated 6 Posts successfully.' ,
865
883
)
866
884
867
- await expect ( page . locator ( '.table table > tbody > tr' ) ) . toHaveCount ( 1 )
868
- await expect ( page . locator ( '.row-1 .cell-title' ) ) . toContainText ( updatedPostTitle )
885
+ // Poll until router has refreshed
886
+ await expect . poll ( ( ) => page . locator ( '.table table > tbody > tr' ) . count ( ) ) . toBe ( 5 )
887
+ await expect ( page . locator ( '.row-1 .cell-title' ) ) . toContainText ( updatedTitle )
869
888
} )
870
889
871
890
test ( 'should update selection state after deselecting item following select all' , async ( ) => {
872
891
await deleteAllPosts ( )
873
- await createPost ( { title : 'Post 1' } )
892
+
893
+ Array . from ( { length : 6 } ) . forEach ( async ( _ , i ) => {
894
+ await createPost ( { title : `Post ${ i + 1 } ` } )
895
+ } )
896
+
874
897
await page . goto ( postsUrl . list )
875
898
await page . locator ( 'input#select-all' ) . check ( )
876
- await page . locator ( 'button.list-selection__button ' ) . click ( )
899
+ await page . locator ( 'button#select-all-across-pages ' ) . click ( )
877
900
878
901
// Deselect the first row
879
902
await page . locator ( '.row-1 input' ) . click ( )
0 commit comments