@@ -322,18 +322,11 @@ struct GenerateContentIntegrationTests {
322322 }
323323
324324 @Test ( arguments: [
325- ( InstanceConfig . vertexAI_v1beta, ModelNames . gemini2FlashPreviewImageGeneration) ,
326- ( InstanceConfig . vertexAI_v1beta_global, ModelNames . gemini2FlashPreviewImageGeneration) ,
327- ( InstanceConfig . vertexAI_v1beta_global, ModelNames . gemini2_5_FlashImagePreview) ,
328- ( InstanceConfig . googleAI_v1beta, ModelNames . gemini2FlashPreviewImageGeneration) ,
329- ( InstanceConfig . googleAI_v1beta, ModelNames . gemini2_5_FlashImagePreview) ,
325+ ( InstanceConfig . vertexAI_v1beta, ModelNames . gemini2_5_FlashImage) ,
326+ ( InstanceConfig . vertexAI_v1beta_global, ModelNames . gemini2_5_FlashImage) ,
327+ ( InstanceConfig . googleAI_v1beta, ModelNames . gemini2_5_FlashImage) ,
330328 // Note: The following configs are commented out for easy one-off manual testing.
331- // (InstanceConfig.googleAI_v1beta_staging, ModelNames.gemini2FlashPreviewImageGeneration)
332- // (InstanceConfig.googleAI_v1beta_freeTier, ModelNames.gemini2FlashPreviewImageGeneration),
333- // (
334- // InstanceConfig.googleAI_v1beta_freeTier_bypassProxy,
335- // ModelNames.gemini2FlashPreviewImageGeneration
336- // ),
329+ // (InstanceConfig.googleAI_v1beta_staging, ModelNames.gemini2_5_FlashImage)
337330 ] )
338331 func generateImage( _ config: InstanceConfig , modelName: String ) async throws {
339332 let generationConfig = GenerationConfig (
@@ -354,34 +347,21 @@ struct GenerateContentIntegrationTests {
354347 )
355348 let prompt = " Generate an image of a cute cartoon kitten playing with a ball of yarn. "
356349
357- var response : GenerateContentResponse ?
358- try await withKnownIssue (
359- " Backend may fail with a 503 - Service Unavailable error when overloaded " ,
360- isIntermittent: true
361- ) {
362- response = try await model. generateContent ( prompt)
363- } matching: { issue in
364- ( issue. error as? BackendError ) . map { $0. httpResponseCode == 503 } ?? false
365- }
350+ let response = try await model. generateContent ( prompt)
366351
367- guard let response else { return }
368352 let candidate = try #require( response. candidates. first)
369353 let inlineDataPart = try #require( candidate. content. parts
370354 . first { $0 is InlineDataPart } as? InlineDataPart )
371355 let inlineDataPartsViaAccessor = response. inlineDataParts
372356 #expect( inlineDataPartsViaAccessor. count == 1 )
373357 let inlineDataPartViaAccessor = try #require( inlineDataPartsViaAccessor. first)
374358 #expect( inlineDataPart == inlineDataPartViaAccessor)
375- #expect( inlineDataPart. mimeType == " image/png " )
359+ #expect( inlineDataPart. mimeType. starts ( with : " image/ " ) )
376360 #expect( inlineDataPart. data. count > 0 )
377361 #if canImport(UIKit)
378362 let uiImage = try #require( UIImage ( data: inlineDataPart. data) )
379- // Gemini 2.0 Flash Experimental returns images sized to fit within a 1024x1024 pixel box but
380- // dimensions may vary depending on the aspect ratio.
381- #expect( uiImage. size. width <= 1024 )
382- #expect( uiImage. size. width >= 500 )
383- #expect( uiImage. size. height <= 1024 )
384- #expect( uiImage. size. height >= 500 )
363+ #expect( uiImage. size. width > 0 )
364+ #expect( uiImage. size. height > 0 )
385365 #endif // canImport(UIKit)
386366 }
387367
@@ -552,18 +532,11 @@ struct GenerateContentIntegrationTests {
552532 }
553533
554534 @Test ( arguments: [
555- ( InstanceConfig . vertexAI_v1beta, ModelNames . gemini2FlashPreviewImageGeneration) ,
556- ( InstanceConfig . vertexAI_v1beta_global, ModelNames . gemini2FlashPreviewImageGeneration) ,
557- ( InstanceConfig . vertexAI_v1beta_global, ModelNames . gemini2_5_FlashImagePreview) ,
558- ( InstanceConfig . googleAI_v1beta, ModelNames . gemini2FlashPreviewImageGeneration) ,
559- ( InstanceConfig . googleAI_v1beta, ModelNames . gemini2_5_FlashImagePreview) ,
535+ ( InstanceConfig . vertexAI_v1beta, ModelNames . gemini2_5_FlashImage) ,
536+ ( InstanceConfig . vertexAI_v1beta_global, ModelNames . gemini2_5_FlashImage) ,
537+ ( InstanceConfig . googleAI_v1beta, ModelNames . gemini2_5_FlashImage) ,
560538 // Note: The following configs are commented out for easy one-off manual testing.
561- // (InstanceConfig.googleAI_v1beta_staging, ModelNames.gemini2FlashPreviewImageGeneration)
562- // (InstanceConfig.googleAI_v1beta_freeTier, ModelNames.gemini2FlashPreviewImageGeneration),
563- // (
564- // InstanceConfig.googleAI_v1beta_freeTier_bypassProxy,
565- // ModelNames.gemini2FlashPreviewImageGeneration
566- // ),
539+ // (InstanceConfig.googleAI_v1beta_staging, ModelNames.gemini2_5_FlashImage)
567540 ] )
568541 func generateImageStreaming( _ config: InstanceConfig , modelName: String ) async throws {
569542 let generationConfig = GenerationConfig (
@@ -572,11 +545,6 @@ struct GenerateContentIntegrationTests {
572545 topK: 1 ,
573546 responseModalities: [ . text, . image]
574547 )
575- let safetySettings = safetySettings. filter {
576- // HARM_CATEGORY_CIVIC_INTEGRITY is deprecated in Vertex AI but only rejected when using the
577- // 'gemini-2.0-flash-preview-image-generation' model.
578- $0. harmCategory != . civicIntegrity
579- }
580548 let model = FirebaseAI . componentInstance ( config) . generativeModel (
581549 modelName: modelName,
582550 generationConfig: generationConfig,
@@ -605,16 +573,12 @@ struct GenerateContentIntegrationTests {
605573
606574 #expect( inlineDataParts. count == 1 )
607575 let inlineDataPart = try #require( inlineDataParts. first)
608- #expect( inlineDataPart. mimeType == " image/png " )
576+ #expect( inlineDataPart. mimeType. starts ( with : " image/ " ) )
609577 #expect( inlineDataPart. data. count > 0 )
610578 #if canImport(UIKit)
611579 let uiImage = try #require( UIImage ( data: inlineDataPart. data) )
612- // Gemini 2.0 Flash Experimental returns images sized to fit within a 1024x1024 pixel box but
613- // dimensions may vary depending on the aspect ratio.
614- #expect( uiImage. size. width <= 1024 )
615- #expect( uiImage. size. width >= 500 )
616- #expect( uiImage. size. height <= 1024 )
617- #expect( uiImage. size. height >= 500 )
580+ #expect( uiImage. size. width > 0 )
581+ #expect( uiImage. size. height > 0 )
618582 #endif // canImport(UIKit)
619583 }
620584
0 commit comments