@@ -30,7 +30,14 @@ import { reInitializeDB } from '../__helpers/shared/clearAndSeed/reInitializeDB.
3030import { initPayloadE2ENoConfig } from '../__helpers/shared/initPayloadE2ENoConfig.js'
3131import { TEST_TIMEOUT_LONG } from '../playwright.config.js'
3232import { credentials } from './credentials.js'
33- import { autosaveGlobalSlug , menuItemsSlug , menuSlug , tenantsSlug , usersSlug } from './shared.js'
33+ import {
34+ autosaveGlobalSlug ,
35+ mediaSlug ,
36+ menuItemsSlug ,
37+ menuSlug ,
38+ tenantsSlug ,
39+ usersSlug ,
40+ } from './shared.js'
3441
3542const filename = fileURLToPath ( import . meta. url )
3643const dirname = path . dirname ( filename )
@@ -40,6 +47,7 @@ test.describe('Multi Tenant', () => {
4047 let serverURL : string
4148 let globalMenuURL : AdminUrlUtil
4249 let autosaveGlobalURL : AdminUrlUtil
50+ let mediaURL : AdminUrlUtil
4351 let menuItemsURL : AdminUrlUtil
4452 let usersURL : AdminUrlUtil
4553 let tenantsURL : AdminUrlUtil
@@ -53,6 +61,7 @@ test.describe('Multi Tenant', () => {
5361 await initPayloadE2ENoConfig < Config > ( { dirname } )
5462 serverURL = serverFromInit
5563 globalMenuURL = new AdminUrlUtil ( serverURL , menuSlug )
64+ mediaURL = new AdminUrlUtil ( serverURL , mediaSlug )
5665 menuItemsURL = new AdminUrlUtil ( serverURL , menuItemsSlug )
5766 usersURL = new AdminUrlUtil ( serverURL , usersSlug )
5867 tenantsURL = new AdminUrlUtil ( serverURL , tenantsSlug )
@@ -461,6 +470,64 @@ test.describe('Multi Tenant', () => {
461470 } )
462471 } )
463472
473+ test . describe ( 'Bulk Upload' , ( ) => {
474+ test ( 'should render the tenant field inline in the Edit all drawer for bulk uploads' , async ( ) => {
475+ await loginClientSide ( {
476+ data : credentials . admin ,
477+ page,
478+ serverURL,
479+ } )
480+
481+ await page . goto ( mediaURL . list )
482+ await clearTenantFilter ( { page } )
483+
484+ await page . locator ( '.list-header__title-actions button' , { hasText : 'Bulk Upload' } ) . click ( )
485+
486+ await page
487+ . locator ( '.dropzone input[type="file"]' )
488+ . setInputFiles ( [
489+ path . resolve ( dirname , '../uploads/image.png' ) ,
490+ path . resolve ( dirname , '../uploads/test-image.png' ) ,
491+ ] )
492+
493+ // The per-file form opens an AssignTenantFieldModal automatically; cancel it
494+ // so we can drive the bulk-edit flow ourselves.
495+ const perFileAssignModal = page
496+ . locator ( 'dialog#assign-tenant-field-modal' )
497+ . filter ( { hasText : 'Assign' } )
498+ await expect ( perFileAssignModal ) . toBeVisible ( )
499+ await perFileAssignModal . locator ( 'button' , { hasText : 'Cancel' } ) . click ( )
500+ await expect ( perFileAssignModal ) . toBeHidden ( )
501+
502+ // Open the bulk-upload "Edit all" drawer and pick the Site (tenant) field.
503+ await page . locator ( '.edit-many-bulk-uploads__toggle' ) . click ( )
504+ const editManyDrawer = page . locator ( 'dialog#edit-media-bulk-uploads' )
505+ await expect ( editManyDrawer ) . toBeVisible ( )
506+
507+ await selectInput ( {
508+ multiSelect : true ,
509+ options : [ 'Site' ] ,
510+ selectLocator : editManyDrawer . locator ( '.edit-many-bulk-uploads__form .react-select' ) ,
511+ } )
512+
513+ // The Site field should render inline inside the bulk-edit drawer (like Alt does).
514+ // The bug: TenantField doesn't recognize 'edit-${slug}-bulk-uploads' as an
515+ // edit-many context, so it wraps itself in a non-interactive AssignTenantFieldModal.
516+ const inlineTenantField = editManyDrawer . locator ( '.tenantField .field-type.relationship' )
517+ await expect ( inlineTenantField ) . toBeVisible ( )
518+
519+ await selectInput ( {
520+ multiSelect : false ,
521+ option : 'Blue Dog' ,
522+ selectLocator : inlineTenantField ,
523+ selectType : 'relationship' ,
524+ } )
525+ await expect (
526+ inlineTenantField . locator ( '.relationship--single-value__text' , { hasText : 'Blue Dog' } ) ,
527+ ) . toBeVisible ( )
528+ } )
529+ } )
530+
464531 test . describe ( 'Globals' , ( ) => {
465532 test ( 'should redirect list view to edit view' , async ( ) => {
466533 await loginClientSide ( {
0 commit comments