@@ -243,7 +243,41 @@ test('with disk name already taken', async ({ page }) => {
243
243
await page . fill ( 'input[name=bootDiskName]' , 'disk-1' )
244
244
245
245
await page . getByRole ( 'button' , { name : 'Create instance' } ) . click ( )
246
- await expectVisible ( page , [ 'text=Disk name already exists' ] )
246
+ await expect ( page . getByText ( 'Name is already in use' ) . first ( ) ) . toBeVisible ( )
247
+ } )
248
+
249
+ test ( 'can’t create a disk with a name that collides with the boot disk name' , async ( {
250
+ page,
251
+ } ) => {
252
+ // Set up the instance and name the boot disk "disk-11"
253
+ await page . goto ( '/projects/mock-project/instances-new' )
254
+ await page . fill ( 'input[name=name]' , 'another-instance' )
255
+ await selectAProjectImage ( page , 'image-1' )
256
+ await page . fill ( 'input[name=bootDiskName]' , 'disk-11' )
257
+
258
+ // Attempt to create a disk with the same name
259
+ await page . getByRole ( 'button' , { name : 'Create new disk' } ) . click ( )
260
+ const dialog = page . getByRole ( 'dialog' )
261
+ await dialog . getByRole ( 'textbox' , { name : 'name' } ) . fill ( 'disk-11' )
262
+ await dialog . getByRole ( 'button' , { name : 'Create disk' } ) . click ( )
263
+ // Expect to see an error message
264
+ await expect ( dialog . getByText ( 'Name is already in use' ) ) . toBeVisible ( )
265
+ // Change the disk name to something else
266
+ await dialog . getByRole ( 'textbox' , { name : 'name' } ) . fill ( 'disk-12' )
267
+ await dialog . getByRole ( 'button' , { name : 'Create disk' } ) . click ( )
268
+ // The disk has been "created" (is in the list of Additional Disks)
269
+ await expectVisible ( page , [ 'text=disk-12' ] )
270
+ // Create the instance
271
+ await page . getByRole ( 'button' , { name : 'Create instance' } ) . click ( )
272
+ await expect ( page ) . toHaveURL ( '/projects/mock-project/instances/another-instance/storage' )
273
+
274
+ // Find the Boot Disk table and verify that disk-11 is there
275
+ const bootDiskTable = page . getByRole ( 'table' , { name : 'Boot disk' } )
276
+ await expect ( bootDiskTable . getByRole ( 'cell' , { name : 'disk-11' } ) ) . toBeVisible ( )
277
+
278
+ // Find the Other Disks table and verify that disk-12 is there
279
+ const otherDisksTable = page . getByRole ( 'table' , { name : 'Other disks' } )
280
+ await expect ( otherDisksTable . getByRole ( 'cell' , { name : 'disk-12' } ) ) . toBeVisible ( )
247
281
} )
248
282
249
283
test ( 'add ssh key from instance create form' , async ( { page } ) => {
@@ -510,13 +544,28 @@ test('create instance with additional disks', async ({ page }) => {
510
544
await page . getByRole ( 'button' , { name : 'Create new disk' } ) . click ( )
511
545
512
546
const createForm = page . getByRole ( 'dialog' , { name : 'Create disk' } )
513
- await createForm . getByRole ( 'textbox' , { name : 'Name' , exact : true } ) . fill ( 'new-disk-1' )
547
+
548
+ // verify that an existing name can't be used
549
+ await createForm . getByRole ( 'textbox' , { name : 'Name' , exact : true } ) . fill ( 'disk-6' )
514
550
await createForm . getByRole ( 'textbox' , { name : 'Size (GiB)' } ) . fill ( '5' )
515
551
await createForm . getByRole ( 'button' , { name : 'Create disk' } ) . click ( )
552
+ await expect ( createForm . getByText ( 'Name is already in use' ) ) . toBeVisible ( )
553
+
554
+ // rename the disk to one that's allowed
555
+ await createForm . getByRole ( 'textbox' , { name : 'Name' , exact : true } ) . fill ( 'new-disk-1' )
556
+ await createForm . getByRole ( 'button' , { name : 'Create disk' } ) . click ( )
516
557
517
558
const disksTable = page . getByRole ( 'table' , { name : 'Disks' } )
559
+ await expect ( disksTable . getByText ( 'disk-6' ) ) . toBeHidden ( )
518
560
await expectRowVisible ( disksTable , { Name : 'new-disk-1' , Type : 'create' , Size : '5GiB' } )
519
561
562
+ // now that name is taken too, so disk create disallows it
563
+ await page . getByRole ( 'button' , { name : 'Create new disk' } ) . click ( )
564
+ await createForm . getByRole ( 'textbox' , { name : 'Name' , exact : true } ) . fill ( 'new-disk-1' )
565
+ await createForm . getByRole ( 'button' , { name : 'Create disk' } ) . click ( )
566
+ await expect ( createForm . getByText ( 'Name is already in use' ) ) . toBeVisible ( )
567
+ await createForm . getByRole ( 'button' , { name : 'Cancel' } ) . click ( )
568
+
520
569
// Attach an existing disk
521
570
await page . getByRole ( 'button' , { name : 'Attach existing disk' } ) . click ( )
522
571
await selectOption ( page , 'Disk name' , 'disk-3' )
0 commit comments