import { expect, describe, it, vi, beforeEach } from 'vitest'import { remote } from '../../../src/index.js'vi.mock('fetch')describe('relaunchActiveApp test', () => {let browser: WebdriverIO.BrowserbeforeEach(async () => {vi.mocked(fetch).mockClear()})it('should restart the iOS app WITHOUT arguments and environment vars', async () => {browser = await remote({baseUrl: 'http://foobar.com',capabilities: {browserName: 'foobar',mobileMode: true,platformName: 'iOS',} as any})const executeSpy = vi.spyOn(browser, 'execute').mockResolvedValueOnce({ bundleId: 'com.example.app', processArguments: { args: [], env: {} } }).mockResolvedValueOnce({ bundleId: 'com.example.app' }).mockResolvedValueOnce({ bundleId: 'com.example.app' })await browser.relaunchActiveApp()expect(executeSpy).toHaveBeenCalledTimes(3)expect(executeSpy).toHaveBeenNthCalledWith(1, 'mobile: activeAppInfo')expect(executeSpy).toHaveBeenNthCalledWith(2, 'mobile: terminateApp', { bundleId: 'com.example.app' })expect(executeSpy).toHaveBeenNthCalledWith(3, 'mobile:launchApp', { bundleId: 'com.example.app' })})it('should restart the iOS app WITH arguments and environment vars', async () => {browser = await remote({baseUrl: 'http://foobar.com',capabilities: {browserName: 'foobar',mobileMode: true,platformName: 'iOS',} as any})const executeSpy = vi.spyOn(browser, 'execute').mockResolvedValueOnce({ bundleId: 'com.example.app', processArguments: { args: ['string', 'string2'], env: { var: 'value' } } }).mockResolvedValueOnce({ bundleId: 'com.example.app' }).mockResolvedValueOnce({ bundleId: 'com.example.app' })await browser.relaunchActiveApp()expect(executeSpy).toHaveBeenCalledTimes(3)expect(executeSpy).toHaveBeenNthCalledWith(1, 'mobile: activeAppInfo')expect(executeSpy).toHaveBeenNthCalledWith(2, 'mobile: terminateApp', { bundleId: 'com.example.app' })expect(executeSpy).toHaveBeenNthCalledWith(3, 'mobile:launchApp', { bundleId: 'com.example.app', arguments: ['string', 'string2'], environment: { var: 'value' } })})it('should restart the Android app', async () => {browser = await remote({baseUrl: 'http://foobar.com',capabilities: {browserName: 'foobar',mobileMode: true,platformName: 'Android',} as any})const currentPackageSpy = vi.spyOn(browser, 'getCurrentPackage').mockResolvedValue('com.wdiodemoapp')const executeSpy = vi.spyOn(browser, 'execute')await browser.relaunchActiveApp()expect(currentPackageSpy).toHaveBeenCalledTimes(1)expect(executeSpy).toHaveBeenCalledTimes(2)expect(executeSpy).toHaveBeenNthCalledWith(1, 'mobile: terminateApp', { appId: 'com.wdiodemoapp' })expect(executeSpy).toHaveBeenNthCalledWith(2, 'mobile: activateApp', { appId: 'com.wdiodemoapp' })})it('should throw an error for non-mobile platforms', async () => {browser = await remote({baseUrl: 'http://foobar.com',capabilities: {browserName: 'foobar',} as any})await expect(browser.relaunchActiveApp()).rejects.toThrow('The `relaunchActiveApp` command is only available for mobile platforms.')})})