@@ -262,14 +262,39 @@ test.describe('Image upload', () => {
262262 await expectUploadProcess ( page )
263263 } )
264264
265+ // generic 500s (errorCode "Internal") have no useful API message, so we fall
266+ // back to a generic one; specific error codes like InsufficientCapacity carry
267+ // a real user-facing message that we surface verbatim.
268+ const genericMessage = 'Something went wrong. Please try again.'
265269 const failureCases = [
266- { imageName : 'disk-create-500' , stepText : 'Create temporary disk' } ,
267- { imageName : 'import-start-500' , stepText : 'Put disk in import mode' } ,
268- { imageName : 'import-stop-500' , stepText : 'Get disk out of import mode' } ,
269- { imageName : 'disk-finalize-500' , stepText : 'Finalize disk and create snapshot' } ,
270+ {
271+ imageName : 'disk-create-500' ,
272+ stepText : 'Create temporary disk' ,
273+ message : genericMessage ,
274+ } ,
275+ {
276+ imageName : 'disk-create-quota' ,
277+ stepText : 'Create temporary disk' ,
278+ message : 'Storage Limit Exceeded' ,
279+ } ,
280+ {
281+ imageName : 'import-start-500' ,
282+ stepText : 'Put disk in import mode' ,
283+ message : genericMessage ,
284+ } ,
285+ {
286+ imageName : 'import-stop-500' ,
287+ stepText : 'Get disk out of import mode' ,
288+ message : genericMessage ,
289+ } ,
290+ {
291+ imageName : 'disk-finalize-500' ,
292+ stepText : 'Finalize disk and create snapshot' ,
293+ message : genericMessage ,
294+ } ,
270295 ]
271296
272- for ( const { imageName, stepText } of failureCases ) {
297+ for ( const { imageName, stepText, message } of failureCases ) {
273298 test ( `failure ${ imageName } ` , async ( { page, browserName } ) => {
274299 // eslint-disable-next-line playwright/no-skipped-test
275300 test . skip ( browserName === 'webkit' , 'safari. stop this' )
@@ -280,10 +305,13 @@ test.describe('Image upload', () => {
280305
281306 const step = page . getByTestId ( `upload-step: ${ stepText } ` )
282307 await expect ( step ) . toHaveAttribute ( 'data-status' , 'error' , { timeout : 15000 } )
283- await expectVisible ( page , [
284- 'text="Something went wrong. Please try again."' ,
285- 'role=button[name="Back"]' ,
286- ] )
308+
309+ await expect ( page . getByText ( message ) ) . toBeVisible ( )
310+ // confirm we don't show both the generic and a specific API message
311+ if ( message !== genericMessage ) {
312+ await expect ( page . getByText ( genericMessage ) ) . toBeHidden ( )
313+ }
314+ await expect ( page . getByRole ( 'button' , { name : 'Back' } ) ) . toBeVisible ( )
287315 } )
288316 }
289317} )
0 commit comments