From 2aeb0c9369a437b7a7ca057fa13c2765eda8d5fb Mon Sep 17 00:00:00 2001 From: Deepak Date: Sat, 8 Nov 2025 15:57:37 +0530 Subject: [PATCH 01/13] Add setThemeMode in platform interface --- .../CHANGELOG.md | 4 ++ .../lib/enumeral.dart | 18 +++++++ .../intercom_flutter_platform_interface.dart | 11 +++- .../lib/method_channel_intercom_flutter.dart | 6 +++ .../pubspec.yaml | 2 +- .../method_channel_intercom_flutter_test.dart | 51 +++++++++++++++++++ 6 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 intercom_flutter_platform_interface/lib/enumeral.dart diff --git a/intercom_flutter_platform_interface/CHANGELOG.md b/intercom_flutter_platform_interface/CHANGELOG.md index a12ae62..a8c491d 100755 --- a/intercom_flutter_platform_interface/CHANGELOG.md +++ b/intercom_flutter_platform_interface/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 2.0.6 + +* Added method `setThemeMode`. + ## 2.0.5 * Deprecated `handlePushMessage` diff --git a/intercom_flutter_platform_interface/lib/enumeral.dart b/intercom_flutter_platform_interface/lib/enumeral.dart new file mode 100644 index 0000000..3a6892d --- /dev/null +++ b/intercom_flutter_platform_interface/lib/enumeral.dart @@ -0,0 +1,18 @@ +enum IntercomVisibility { + gone, + visible, +} + +enum IntercomTheme { + // // Enable dark mode + dark, + + // Enable light mode + light, + + // Use system preference + system, + + // Clear override and use server-provided theme + none, +} diff --git a/intercom_flutter_platform_interface/lib/intercom_flutter_platform_interface.dart b/intercom_flutter_platform_interface/lib/intercom_flutter_platform_interface.dart index 4f5b749..8d5fdda 100644 --- a/intercom_flutter_platform_interface/lib/intercom_flutter_platform_interface.dart +++ b/intercom_flutter_platform_interface/lib/intercom_flutter_platform_interface.dart @@ -1,9 +1,8 @@ +import 'package:intercom_flutter_platform_interface/enumeral.dart'; import 'package:intercom_flutter_platform_interface/intercom_status_callback.dart'; import 'package:intercom_flutter_platform_interface/method_channel_intercom_flutter.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; -enum IntercomVisibility { gone, visible } - abstract class IntercomFlutterPlatform extends PlatformInterface { IntercomFlutterPlatform() : super(token: _token); @@ -295,4 +294,12 @@ abstract class IntercomFlutterPlatform extends PlatformInterface { Future setAuthTokens(Map tokens) { throw UnimplementedError('setAuthTokens() has not been implemented.'); } + + /// The theme mode controls whether the SDK displays in light mode, dark mode, + /// or follows the system theme. + /// The theme selection will be reset when the app restarts i.e. You can + /// override the server-provided theme setting for the current session only. + Future setThemeMode(IntercomTheme theme) { + throw UnimplementedError('setThemeMode() has not been implemented.'); + } } diff --git a/intercom_flutter_platform_interface/lib/method_channel_intercom_flutter.dart b/intercom_flutter_platform_interface/lib/method_channel_intercom_flutter.dart index 949a8c5..914dd81 100644 --- a/intercom_flutter_platform_interface/lib/method_channel_intercom_flutter.dart +++ b/intercom_flutter_platform_interface/lib/method_channel_intercom_flutter.dart @@ -1,4 +1,5 @@ import 'package:flutter/services.dart'; +import 'package:intercom_flutter_platform_interface/enumeral.dart'; import 'package:intercom_flutter_platform_interface/intercom_flutter_platform_interface.dart'; import 'package:intercom_flutter_platform_interface/intercom_status_callback.dart'; @@ -265,6 +266,11 @@ class MethodChannelIntercomFlutter extends IntercomFlutterPlatform { await _channel.invokeMethod('setAuthTokens', {'tokens': tokens}); } + @override + Future setThemeMode(IntercomTheme theme) async { + await _channel.invokeMethod('setThemeMode', {'theme': theme.name}); + } + /// Convert the [PlatformException] details to [IntercomError]. /// From the Platform side if the intercom operation failed then error details /// will be sent as details in [PlatformException]. diff --git a/intercom_flutter_platform_interface/pubspec.yaml b/intercom_flutter_platform_interface/pubspec.yaml index 19a0e7f..1d86bb1 100644 --- a/intercom_flutter_platform_interface/pubspec.yaml +++ b/intercom_flutter_platform_interface/pubspec.yaml @@ -1,6 +1,6 @@ name: intercom_flutter_platform_interface description: A common platform interface for the intercom_flutter plugin. -version: 2.0.5 +version: 2.0.6 homepage: https://github.com/v3rm0n/intercom_flutter dependencies: diff --git a/intercom_flutter_platform_interface/test/method_channel_intercom_flutter_test.dart b/intercom_flutter_platform_interface/test/method_channel_intercom_flutter_test.dart index ee4c39d..0f96265 100644 --- a/intercom_flutter_platform_interface/test/method_channel_intercom_flutter_test.dart +++ b/intercom_flutter_platform_interface/test/method_channel_intercom_flutter_test.dart @@ -1,5 +1,6 @@ import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:intercom_flutter_platform_interface/enumeral.dart'; import 'package:intercom_flutter_platform_interface/intercom_flutter_platform_interface.dart'; import 'package:intercom_flutter_platform_interface/method_channel_intercom_flutter.dart'; import 'package:mockito/mockito.dart'; @@ -479,6 +480,56 @@ void main() { ], ); }); + + group('setThemeMode', () { + test('dark', () async { + await intercom.setThemeMode(IntercomTheme.dark); + expect( + log, + [ + isMethodCall('setThemeMode', arguments: { + 'theme': 'dark', + }) + ], + ); + }); + + test('light', () async { + await intercom.setThemeMode(IntercomTheme.light); + expect( + log, + [ + isMethodCall('setThemeMode', arguments: { + 'theme': 'light', + }) + ], + ); + }); + + test('system', () async { + await intercom.setThemeMode(IntercomTheme.system); + expect( + log, + [ + isMethodCall('setThemeMode', arguments: { + 'theme': 'system', + }) + ], + ); + }); + + test('none', () async { + await intercom.setThemeMode(IntercomTheme.none); + expect( + log, + [ + isMethodCall('setThemeMode', arguments: { + 'theme': 'none', + }) + ], + ); + }); + }); }); } From 793d89a0716e3b2283c336a1c88f963a1cef7797 Mon Sep 17 00:00:00 2001 From: Deepak Date: Sat, 8 Nov 2025 15:58:34 +0530 Subject: [PATCH 02/13] Implement setThemeMode in web --- intercom_flutter_web/CHANGELOG.md | 4 ++++ .../intercom_flutter_web_test.dart | 18 ++++++++++++++++++ .../lib/intercom_flutter_web.dart | 18 ++++++++++++++++-- intercom_flutter_web/pubspec.yaml | 4 ++-- 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/intercom_flutter_web/CHANGELOG.md b/intercom_flutter_web/CHANGELOG.md index df2e589..9604eec 100755 --- a/intercom_flutter_web/CHANGELOG.md +++ b/intercom_flutter_web/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.1.10 + +* Implemented method `setThemeMode`. + ## 1.1.9 * Removed `auth_tokens` and `intercom_user_jwt` from intercomSettings on logout. diff --git a/intercom_flutter_web/example/integration_test/intercom_flutter_web_test.dart b/intercom_flutter_web/example/integration_test/intercom_flutter_web_test.dart index 95d7527..308d758 100755 --- a/intercom_flutter_web/example/integration_test/intercom_flutter_web_test.dart +++ b/intercom_flutter_web/example/integration_test/intercom_flutter_web_test.dart @@ -154,5 +154,23 @@ void main() { testWidgets('setAuthTokens', (WidgetTester _) async { expect(plugin.setAuthTokens({'security_token': 'test'}), completes); }); + + group('setThemeMode', () { + testWidgets('dark', (WidgetTester _) async { + expect(plugin.setThemeMode(IntercomTheme.dark), completes); + }); + + testWidgets('light', (WidgetTester _) async { + expect(plugin.setThemeMode(IntercomTheme.light), completes); + }); + + testWidgets('system', (WidgetTester _) async { + expect(plugin.setThemeMode(IntercomTheme.system), completes); + }); + + testWidgets('none', (WidgetTester _) async { + expect(plugin.setThemeMode(IntercomTheme.none), completes); + }); + }); }); } diff --git a/intercom_flutter_web/lib/intercom_flutter_web.dart b/intercom_flutter_web/lib/intercom_flutter_web.dart index c1181f3..cb0f29b 100644 --- a/intercom_flutter_web/lib/intercom_flutter_web.dart +++ b/intercom_flutter_web/lib/intercom_flutter_web.dart @@ -3,14 +3,15 @@ import 'dart:js_interop'; import 'dart:js_interop_unsafe'; import 'package:flutter_web_plugins/flutter_web_plugins.dart'; +import 'package:intercom_flutter_platform_interface/enumeral.dart'; import 'package:intercom_flutter_platform_interface/intercom_flutter_platform_interface.dart'; import 'package:intercom_flutter_platform_interface/intercom_status_callback.dart'; import 'package:uuid/uuid.dart'; import 'package:web/web.dart' as web; /// export the enum [IntercomVisibility] -export 'package:intercom_flutter_platform_interface/intercom_flutter_platform_interface.dart' - show IntercomVisibility; +export 'package:intercom_flutter_platform_interface/enumeral.dart' + show IntercomVisibility, IntercomTheme; export 'package:intercom_flutter_platform_interface/intercom_status_callback.dart' show IntercomStatusCallback, IntercomError; @@ -352,6 +353,19 @@ class IntercomFlutterWeb extends IntercomFlutterPlatform { print("Auth tokens added"); } + @override + Future setThemeMode(IntercomTheme theme) async { + globalContext.callMethod( + 'Intercom'.toJS, + 'update'.toJS, + updateIntercomSettings( + 'theme_mode', + theme == IntercomTheme.none ? null : theme.name, + ).jsify(), + ); + print("Theme overridden"); + } + /// get the [window.intercomSettings] Map getIntercomSettings() { if (globalContext.hasProperty('intercomSettings'.toJS).toDart) { diff --git a/intercom_flutter_web/pubspec.yaml b/intercom_flutter_web/pubspec.yaml index 25076f7..56e2136 100644 --- a/intercom_flutter_web/pubspec.yaml +++ b/intercom_flutter_web/pubspec.yaml @@ -1,6 +1,6 @@ name: intercom_flutter_web description: Web platform implementation of intercom_flutter -version: 1.1.9 +version: 1.1.10 homepage: https://github.com/v3rm0n/intercom_flutter flutter: @@ -15,7 +15,7 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - intercom_flutter_platform_interface: ^2.0.5 + intercom_flutter_platform_interface: ^2.0.6 uuid: ^4.2.1 # to get the random uuid for loginUnidentifiedUser in web web: ^1.0.0 From 1b7260f022aa1b0d3b7fe545caf128f2d3dfed32 Mon Sep 17 00:00:00 2001 From: Deepak Date: Sat, 8 Nov 2025 16:01:38 +0530 Subject: [PATCH 03/13] Implement setThemeMode in Android and iOS --- intercom_flutter/CHANGELOG.md | 4 +++ intercom_flutter/android/build.gradle | 5 ++-- .../maido/intercom/IntercomFlutterPlugin.kt | 19 ++++++++++++ .../ios/Classes/IntercomFlutterPlugin.m | 13 ++++++++ intercom_flutter/lib/intercom_flutter.dart | 13 ++++++-- intercom_flutter/pubspec.yaml | 6 ++-- .../test/intercom_flutter_test.dart | 30 +++++++++++++++++++ 7 files changed, 83 insertions(+), 7 deletions(-) diff --git a/intercom_flutter/CHANGELOG.md b/intercom_flutter/CHANGELOG.md index 5fcafba..df29c4a 100755 --- a/intercom_flutter/CHANGELOG.md +++ b/intercom_flutter/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 9.4.15 + +* Added API `setThemeMode`. + ## 9.4.14 * Bump Intercom iOS SDK version to [19.3.2](https://github.com/intercom/intercom-ios/releases/tag/19.3.2) diff --git a/intercom_flutter/android/build.gradle b/intercom_flutter/android/build.gradle index a6935bc..74dbe77 100644 --- a/intercom_flutter/android/build.gradle +++ b/intercom_flutter/android/build.gradle @@ -2,14 +2,14 @@ group 'io.maido.intercom' version '1.0-SNAPSHOT' buildscript { - ext.kotlin_version = '2.1.21' + ext.kotlin_version = '2.2.21' repositories { google() mavenCentral() } dependencies { - classpath("com.android.tools.build:gradle:8.10.1") + classpath("com.android.tools.build:gradle:8.13.0") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") } } @@ -51,5 +51,6 @@ android { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'io.intercom.android:intercom-sdk:17.3.0' + implementation 'io.intercom.android:intercom-sdk-ui:17.3.0' implementation 'com.google.firebase:firebase-messaging:24.1.2' } diff --git a/intercom_flutter/android/src/main/kotlin/io/maido/intercom/IntercomFlutterPlugin.kt b/intercom_flutter/android/src/main/kotlin/io/maido/intercom/IntercomFlutterPlugin.kt index c952c17..0abed7b 100644 --- a/intercom_flutter/android/src/main/kotlin/io/maido/intercom/IntercomFlutterPlugin.kt +++ b/intercom_flutter/android/src/main/kotlin/io/maido/intercom/IntercomFlutterPlugin.kt @@ -12,6 +12,7 @@ import io.flutter.plugin.common.MethodChannel.Result import io.intercom.android.sdk.* import io.intercom.android.sdk.identity.Registration import io.intercom.android.sdk.push.IntercomPushClient +import io.intercom.android.sdk.ui.theme.ThemeMode class IntercomFlutterPlugin : FlutterPlugin, MethodCallHandler, EventChannel.StreamHandler, ActivityAware { companion object { @@ -298,6 +299,24 @@ class IntercomFlutterPlugin : FlutterPlugin, MethodCallHandler, EventChannel.Str }) } } + "setThemeMode" -> { + val theme = call.argument("theme") + when (theme) { + "dark" -> { + Intercom.client().setThemeMode(ThemeMode.DARK) + } + "light" -> { + Intercom.client().setThemeMode(ThemeMode.LIGHT) + } + "system" -> { + Intercom.client().setThemeMode(ThemeMode.SYSTEM) + } + else -> { + Intercom.client().setThemeMode(null) + } + } + result.success("Theme overridden") + } else -> result.notImplemented() } } diff --git a/intercom_flutter/ios/Classes/IntercomFlutterPlugin.m b/intercom_flutter/ios/Classes/IntercomFlutterPlugin.m index e3e36af..b48c6ac 100644 --- a/intercom_flutter/ios/Classes/IntercomFlutterPlugin.m +++ b/intercom_flutter/ios/Classes/IntercomFlutterPlugin.m @@ -285,6 +285,19 @@ - (void) handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result details: [self getIntercomError:errorCode:errorMsg]]); }]; } + } else if([@"setThemeMode" isEqualToString:call.method]) { + NSString *theme = call.arguments[@"theme"]; + + if([@"dark" isEqualToString:theme]){ + [Intercom setThemeOverride:ICMThemeOverrideDark]; + } else if([@"light" isEqualToString:theme]){ + [Intercom setThemeOverride:ICMThemeOverrideLight]; + } else if([@"system" isEqualToString:theme]){ + [Intercom setThemeOverride:ICMThemeOverrideSystem]; + } else { + [Intercom setThemeOverride:ICMThemeOverrideNone]; + } + result(@"Theme overridden"); } else { result(FlutterMethodNotImplemented); diff --git a/intercom_flutter/lib/intercom_flutter.dart b/intercom_flutter/lib/intercom_flutter.dart index b4b794b..e6c6e12 100755 --- a/intercom_flutter/lib/intercom_flutter.dart +++ b/intercom_flutter/lib/intercom_flutter.dart @@ -2,12 +2,13 @@ library intercom_flutter; import 'dart:async'; +import 'package:intercom_flutter_platform_interface/enumeral.dart'; import 'package:intercom_flutter_platform_interface/intercom_flutter_platform_interface.dart'; import 'package:intercom_flutter_platform_interface/intercom_status_callback.dart'; /// export the [IntercomVisibility] enum -export 'package:intercom_flutter_platform_interface/intercom_flutter_platform_interface.dart' - show IntercomVisibility; +export 'package:intercom_flutter_platform_interface/enumeral.dart' + show IntercomVisibility, IntercomTheme; export 'package:intercom_flutter_platform_interface/intercom_status_callback.dart' show IntercomStatusCallback, IntercomError; @@ -304,4 +305,12 @@ class Intercom { Future setAuthTokens(Map tokens) { return IntercomFlutterPlatform.instance.setAuthTokens(tokens); } + + /// The theme mode controls whether the SDK displays in light mode, dark mode, + /// or follows the system theme. + /// The theme selection will be reset when the app restarts i.e. You can + /// override the server-provided theme setting for the current session only. + Future setThemeMode(IntercomTheme theme) { + return IntercomFlutterPlatform.instance.setThemeMode(theme); + } } diff --git a/intercom_flutter/pubspec.yaml b/intercom_flutter/pubspec.yaml index cec8f9a..59b88e1 100644 --- a/intercom_flutter/pubspec.yaml +++ b/intercom_flutter/pubspec.yaml @@ -1,7 +1,7 @@ name: intercom_flutter description: Flutter plugin for Intercom integration. Provides in-app messaging and help-center Intercom services -version: 9.4.14 +version: 9.4.15 homepage: https://github.com/v3rm0n/intercom_flutter dependencies: @@ -9,8 +9,8 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - intercom_flutter_platform_interface: ^2.0.5 - intercom_flutter_web: ^1.1.9 + intercom_flutter_platform_interface: ^2.0.6 + intercom_flutter_web: ^1.1.10 dev_dependencies: flutter_test: diff --git a/intercom_flutter/test/intercom_flutter_test.dart b/intercom_flutter/test/intercom_flutter_test.dart index 5239c26..89c78a5 100755 --- a/intercom_flutter/test/intercom_flutter_test.dart +++ b/intercom_flutter/test/intercom_flutter_test.dart @@ -297,4 +297,34 @@ void main() { 'tokens': {'security_token': 'test'}, }); }); + + group('setThemeMode', () { + test('dark', () { + Intercom.instance.setThemeMode(IntercomTheme.dark); + expectMethodCall('setThemeMode', arguments: { + 'theme': 'dark', + }); + }); + + test('light', () { + Intercom.instance.setThemeMode(IntercomTheme.light); + expectMethodCall('setThemeMode', arguments: { + 'theme': 'light', + }); + }); + + test('system', () { + Intercom.instance.setThemeMode(IntercomTheme.system); + expectMethodCall('setThemeMode', arguments: { + 'theme': 'system', + }); + }); + + test('none', () { + Intercom.instance.setThemeMode(IntercomTheme.none); + expectMethodCall('setThemeMode', arguments: { + 'theme': 'none', + }); + }); + }); } From 74b236be2edf8dde7bed11e9c0719d4a505ad858 Mon Sep 17 00:00:00 2001 From: Deepak Date: Sat, 8 Nov 2025 16:02:12 +0530 Subject: [PATCH 04/13] Update example app --- intercom_flutter/example/android/settings.gradle | 6 +++--- intercom_flutter/example/ios/Runner/AppDelegate.swift | 2 +- intercom_flutter/example/ios/Runner/Info.plist | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/intercom_flutter/example/android/settings.gradle b/intercom_flutter/example/android/settings.gradle index baa8dbc..abd0485 100644 --- a/intercom_flutter/example/android/settings.gradle +++ b/intercom_flutter/example/android/settings.gradle @@ -19,9 +19,9 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version '8.10.1' apply false - id "org.jetbrains.kotlin.android" version "2.1.21" apply false - id "com.google.gms.google-services" version "4.4.2" apply false + id "com.android.application" version '8.13.0' apply false + id "org.jetbrains.kotlin.android" version "2.2.21" apply false + id "com.google.gms.google-services" version "4.4.4" apply false } include ":app" diff --git a/intercom_flutter/example/ios/Runner/AppDelegate.swift b/intercom_flutter/example/ios/Runner/AppDelegate.swift index 70693e4..b636303 100644 --- a/intercom_flutter/example/ios/Runner/AppDelegate.swift +++ b/intercom_flutter/example/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import UIKit import Flutter -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/intercom_flutter/example/ios/Runner/Info.plist b/intercom_flutter/example/ios/Runner/Info.plist index abc92b3..37956cf 100644 --- a/intercom_flutter/example/ios/Runner/Info.plist +++ b/intercom_flutter/example/ios/Runner/Info.plist @@ -43,5 +43,7 @@ CADisableMinimumFrameDurationOnPhone + UIApplicationSupportsIndirectInputEvents + From d038ce2b464c33075e3a74fda7c75f9e9ce83c8b Mon Sep 17 00:00:00 2001 From: Deepak Date: Sun, 9 Nov 2025 14:04:27 +0530 Subject: [PATCH 05/13] Update integration test command --- .github/workflows/main.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 31836ea..d2d93b3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -117,5 +117,10 @@ jobs: # Run all integration tests - name: Run integration tests - run: flutter drive -d web-server --browser-name=chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart + run: flutter drive \ + -d chrome \ + --driver=test_driver/integration_test.dart \ + --target=integration_test/intercom_flutter_web_test.dart \ + --web-renderer=html \ + --headless working-directory: ${{env.source-directory}} From 6c8de2d89bf90d3b8607f91ded75c05985a359e4 Mon Sep 17 00:00:00 2001 From: Deepak Date: Sun, 9 Nov 2025 14:09:15 +0530 Subject: [PATCH 06/13] Update integration test command --- .github/workflows/main.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d2d93b3..423940d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -117,10 +117,5 @@ jobs: # Run all integration tests - name: Run integration tests - run: flutter drive \ - -d chrome \ - --driver=test_driver/integration_test.dart \ - --target=integration_test/intercom_flutter_web_test.dart \ - --web-renderer=html \ - --headless + run: flutter drive -d chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart --web-renderer=html --headless working-directory: ${{env.source-directory}} From d17b1f7d2f0f8475cc592eca7eeec1b0cb87c16c Mon Sep 17 00:00:00 2001 From: Deepak Date: Sun, 9 Nov 2025 14:13:01 +0530 Subject: [PATCH 07/13] Update integration test command --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 423940d..c95911c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -117,5 +117,5 @@ jobs: # Run all integration tests - name: Run integration tests - run: flutter drive -d chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart --web-renderer=html --headless + run: flutter drive -d chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart --headless working-directory: ${{env.source-directory}} From 657cef8f8dd11358596aca4c2538aa1ecda9a525 Mon Sep 17 00:00:00 2001 From: Deepak Date: Sun, 9 Nov 2025 14:17:55 +0530 Subject: [PATCH 08/13] Update integration test command --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c95911c..3ea498a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -117,5 +117,5 @@ jobs: # Run all integration tests - name: Run integration tests - run: flutter drive -d chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart --headless + run: flutter drive -d web-server --browser-name=chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart --headless working-directory: ${{env.source-directory}} From 5684b33d177113444b83b2646bd18218a90e22ec Mon Sep 17 00:00:00 2001 From: Deepak Date: Sun, 9 Nov 2025 14:32:36 +0530 Subject: [PATCH 09/13] Update integration test command --- .github/workflows/main.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3ea498a..d6e18a4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -94,6 +94,9 @@ jobs: - uses: subosito/flutter-action@v1 with: channel: 'master' + + - name: Install xvfb (virtual display) + run: sudo apt-get update && sudo apt-get install -y xvfb # Download all Flutter packages - name: Download dependencies @@ -117,5 +120,8 @@ jobs: # Run all integration tests - name: Run integration tests - run: flutter drive -d web-server --browser-name=chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart --headless + timeout-minutes: 10 + env: + CHROME_NO_SANDBOX: true + run: xvfb-run flutter drive -d chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart --headless working-directory: ${{env.source-directory}} From f44a8e7b0ee73f455c05d4f9de079176ef3c434b Mon Sep 17 00:00:00 2001 From: Deepak Date: Sun, 9 Nov 2025 14:42:06 +0530 Subject: [PATCH 10/13] Update integration test command --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d6e18a4..3eb16e8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -87,13 +87,15 @@ jobs: runs-on: ubuntu-latest env: source-directory: ./intercom_flutter_web/example + DISPLAY: :99 + CHROME_NO_SANDBOX: true steps: - uses: actions/checkout@v2 - uses: nanasess/setup-chromedriver@v2 - uses: subosito/flutter-action@v1 with: - channel: 'master' + channel: 'stable' - name: Install xvfb (virtual display) run: sudo apt-get update && sudo apt-get install -y xvfb @@ -121,7 +123,5 @@ jobs: # Run all integration tests - name: Run integration tests timeout-minutes: 10 - env: - CHROME_NO_SANDBOX: true - run: xvfb-run flutter drive -d chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart --headless + run: xvfb-run -s "-screen 0 1024x768x24" flutter drive -d chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart --headless working-directory: ${{env.source-directory}} From fbdf0db3a5b078839709ae14558b15c0c1d5717d Mon Sep 17 00:00:00 2001 From: Deepak Date: Sun, 9 Nov 2025 14:47:09 +0530 Subject: [PATCH 11/13] Update integration test command --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3eb16e8..605d4be 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -123,5 +123,5 @@ jobs: # Run all integration tests - name: Run integration tests timeout-minutes: 10 - run: xvfb-run -s "-screen 0 1024x768x24" flutter drive -d chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart --headless + run: xvfb-run -s "-screen 0 1024x768x24" flutter test --platform=chrome --headless integration_test/intercom_flutter_web_test.dart working-directory: ${{env.source-directory}} From 522b0300d9777baf86c601037536c6a627970ea0 Mon Sep 17 00:00:00 2001 From: Deepak Date: Sun, 9 Nov 2025 14:51:18 +0530 Subject: [PATCH 12/13] Update integration test command --- .github/workflows/main.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 605d4be..27f977a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -87,8 +87,6 @@ jobs: runs-on: ubuntu-latest env: source-directory: ./intercom_flutter_web/example - DISPLAY: :99 - CHROME_NO_SANDBOX: true steps: - uses: actions/checkout@v2 @@ -96,9 +94,6 @@ jobs: - uses: subosito/flutter-action@v1 with: channel: 'stable' - - - name: Install xvfb (virtual display) - run: sudo apt-get update && sudo apt-get install -y xvfb # Download all Flutter packages - name: Download dependencies @@ -122,6 +117,5 @@ jobs: # Run all integration tests - name: Run integration tests - timeout-minutes: 10 - run: xvfb-run -s "-screen 0 1024x768x24" flutter test --platform=chrome --headless integration_test/intercom_flutter_web_test.dart + run: flutter drive -d web-server --browser-name=chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart working-directory: ${{env.source-directory}} From 4c26f1f2078902710b3e8df0616168ec453c093e Mon Sep 17 00:00:00 2001 From: Deepak Date: Sun, 9 Nov 2025 14:54:02 +0530 Subject: [PATCH 13/13] Update integration test command --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 27f977a..d661f8a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -117,5 +117,6 @@ jobs: # Run all integration tests - name: Run integration tests + timeout-minutes: 10 run: flutter drive -d web-server --browser-name=chrome --driver=test_driver/integration_test.dart --target=integration_test/intercom_flutter_web_test.dart working-directory: ${{env.source-directory}}