import { describe, expect, it } from "vitest"; import { shouldEnableKeyboardAdaptation } from "../environment"; import type { KeyboardAdaptEnvironment } from "../types"; function makeEnvironment( overrides: Partial = {}, ): KeyboardAdaptEnvironment { return { platform: "android", osName: "Android", osVersion: "16", deviceVendor: "Xiaomi", deviceModel: "2211133C", isAndroid: true, isIOS: false, isMobile: true, browserName: "Facebook", browserVersion: "566.0.0.48.73", isInAppBrowser: true, inAppBrowserName: "facebook", isXiaomiFamilyDevice: true, isFacebookInAppBrowser: true, hasVisualViewport: true, usesXiaomiFacebookFallback: true, ...overrides, }; } describe("shouldEnableKeyboardAdaptation", () => { it("enables only for Xiaomi Android Facebook in-app browser fallback", () => { expect(shouldEnableKeyboardAdaptation(makeEnvironment())).toBe(true); expect( shouldEnableKeyboardAdaptation( makeEnvironment({ platform: "ios", osName: "iOS", osVersion: "18", deviceVendor: "Apple", deviceModel: "iPhone", isAndroid: false, isIOS: true, isXiaomiFamilyDevice: false, usesXiaomiFacebookFallback: false, }), ), ).toBe(false); expect( shouldEnableKeyboardAdaptation( makeEnvironment({ browserName: "Instagram", inAppBrowserName: "instagram", isFacebookInAppBrowser: false, usesXiaomiFacebookFallback: false, }), ), ).toBe(false); expect( shouldEnableKeyboardAdaptation( makeEnvironment({ deviceVendor: "Samsung", deviceModel: "SM-G991B", isXiaomiFamilyDevice: false, usesXiaomiFacebookFallback: false, }), ), ).toBe(false); }); });