Does the latest katalon Studio version support the xcode 10.1 and ios 12 on MAC

Does the latest katalon Studio version support the xcode 10.1 and ios 12 on MAC machine?

No, Katalon does not support Xcode 10.1 and iOS 12 as of now on MAC

is there the plan to support the xcode 10.1 and iOS 12?

there is Xcode new version version 11.0

I can tell you that I have Katalon Studio 5.10.1 and Appium 1.8.1 on my machine with both Xcode 9.4.1 and 10.1 running side-by-side and I’m able to run Katalon tests. Here’s how it works for me:

  • Install Appium 1.8.1 via npm install -g appium@1.8.1
  • Install Katalon Studio 5.10.0 (latest)
  • Install Xcode10.1 from the App Store as your default version
  • Download Xcode9.4.1 from the Apple Developer Center: https://download.developer.apple.com/Developer_Tools/Xcode_9.4.1/Xcode_9.4.1.xip
  • Extract and install Xcode9.4.1 into your /Applications folder, choosing “Keep Both” when prompted to overwrite.
  • Name the Xcode9.4.1 application to Xcode9.4.1
  • Set the default version of Xcode to 10.1 via sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
  • In Xcode 10.1, build the Appium WebDriverAgent project (located in /Users/<yourhome>/.nvm/versions/node/<nodeversion>/lib/node_modules/appium/node_modules/appium-xcuitest-driver )
    NOTE: You will need to do the following to get it to compile in Xcode10:
    • In Xcode, go to File->Project Settings and change the Build System to “Legacy Build System”
    • In the WebDriverAgentLib target, go to the Build Settings tab
    • Find “Other Linker Flags” and add -Wl,-U,"_OBJC_CLASS_$_XCElementSnapshot"
  • Do any development of your app in Xcode10.1
  • When ready to test, switch the default version of Xcode to 9.4.1 via sudo xcode-select -s /Applications/Xcode9.4.1.app/Contents/Developer (this is because Katalon Studio doesn’t support Xcode10 yet)
  • Open Katalon Studio
  • Run your tests

Hope this helps,

Chris

Hello,

Despite your explanation I still have the error message.

I am developing my application with xCode 10.1 and swift 4.

Hi @Dino,

What’s the error message you’re seeing? You can also build the WebDriverAgent project using Xcode9.4.1, instead, then you shouldn’t have to add -Wl,-U,"_OBJC_CLASS_$_XCElementSnapshot".

I should note that because Katalon Studio doesn’t support Xcode10, yet, you can’t test on an iOS12 simulator - you’ll still need to use an iOS11.4 or lower simulator to run your tests.

– Chris

I tried everything … even by downloading version 11.2 on xCode 10.1 simulators …

1 Like

Hi @Dino

That’s an interesting error because the UDID is supposed to be something like 0A882FFF-10CC-43C2-896E-E83CA5DBE295, not 9.7-inch. Could you share a screenshot of what your Katalon Studio’s Project settings are? Namely the Project Settings->Desired Capabilities->Mobile->iOS screen? Mine looks something like this at the top:

Here are the steps that worked for me to create an app in Xcode 10 but test in Katalon Studio (Xcode 9.4.1):

  • Install both Xcode 9.4.1 and Xcode 10 (make sure you say “Keep Both” or “Rename” when installing the 2nd version)
  • Switch to Xcode 10 to do any development of the app you want to test using sudo xcode-select -s /Applications/Xcode.app/Contents/Developer (assuming the Xcode 10 app is named Xcode.app) NOTE: Make sure the Deployment Target is iOS 11.4 or less.
  • Build the app in Xcode 10, making note of where the DerivedData directory is and the resulting .app file. You can change this location in Xcode->Preferences->Locations. Here is how mine is set up:

  • This will create an app file located at MyProject/DerivedData/Build/Products/Development-iphonesimulator\MyProject.app
  • Switch to Xcode 9.4.1 in the command line using sudo xcode-select -s /Applications/Xcode_9.4.1.app/Contents/Developer
  • If you haven’t already, build the Appium WebDriverAgent project using Xcode 9.4.1
  • Start the Simulators app (this should be the one for Xcode 9.4.1)
  • Start the simulator for an iOS 11.4 device you want to test on
  • Drag the MyProject.app file from above into the simulator. This effectively installs it.
  • In Katalon Studio, make sure you start your test using false for the 2nd argument to MobileBuiltInKeywords.startApplication. This makes sure that the app won’t get removed and reinstalled every time. NOTE: You could also just point your test to the MyProject.app file.
  • Run your Katalon Studio tests

Hope this helps,

Chris

hi @Chris_Trevarthen,

Thank you for your explanations. I managed to get around my problem by simply switching from iPad (iPad Air 2). However, he can not run my .app in the simulator. He first installs WebDriverAgent and then the app but it crashes on startup. He tries to restart it a second time but it also crashes.

Hi @Dino

Can you please verify that the WebDriverAgent project builds OK through Xcode and that you don’t see any errors in the Signing section?

You should see the targets looking like this:

You might need to change the Build Settings for WebDriverAgentRunner to set the Product Bundle Identifier to a bundle id for your company:

– Chris

As an alternative solution. I’m not sure i’d recommend it for everything or everyone because its uses a beta version, but it you absolutely have to run xcode 10 with Katalon you can upgrade appium to ver 1.8.2beta. That version supports the latest xcode versioning scheme, but is still compatible with the way Katalon interacts with appium. I haven’t had any major issues with this setup running ios tests. There is a bug with some of the iPad simulators. The tooling expects the UDID to be in the second set of “()” however that is not the case with some of the iPads, so you get the error you saw “Unknown device or simulator UDID:”

2 Likes

hi,

The problem is resolved. I had a version problem. I had to install version 11.3 in the simulators because version 11.4 was not compatible with Katalon. I also deleted version 11.4 of the simulators to be on executing the right version in Katalon. Information is also important before installing the application directly into the simulator (drag and drop). Otherwise it did not work either. I hope this post will help some while waiting for the update of the Katalon team with the compatibility of xCode 10 & IOS 12.

1 Like

Hi Team. I am still struggling with my device not being found on Kalaton Studio.
I am using below:
Xcode - 11
Katalon - 6.3.3
IOS version in phone - 13
“The requested device could not be found because no available devices matched the request.” is displayed in terminal when I run - xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=’ test.
Also, "Unrecognized device " is displayed in Katalon studio when navigated as - Record Mobile > IOS devices > Select drop down of device name.
Please somebody help me out

I think you are missing the id. It should look like this:
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=A9F18306-6B22-442B-99F4-F217A5EE8D38’ test

I am using Katalon Version 7.2.1 on Mac Pro.
Appium Version 1.16.1
Npm 13
Node 13
Xcode Version 11.3

I have installed all these on my Mac Pro machine. I want to test my IOS App through Katalon Studio but when I click on Record and Play button I found Error “Unable to start Application” Unable to create new session

I do R&D but found no result

Please help
Thanks

Hi @engr.hassanhaq,

I haven’t tried with Xcode 11.3 yet, but I know that the recommended Appium version has been 1.15.1, so could you try downgrading to that version?

– Chris

11.3.1 xcode
13.3 iOS
1.15.1 appium
7.2.1 katalon studio

running mobile app test with .ipa file and also tried with .app file, on mac, using simulator
but then this problem keep pop up whenever i try to record mobile
can anybody help, thanksScreenshot 2020-02-25 at 10.00.51 AM

Blockquote

error code
org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.core.runtime.AssertionFailedException: null argument:)

at org.eclipse.swt.SWT.error(SWT.java:4533)

at org.eclipse.swt.SWT.error(SWT.java:4448)

at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:255)

at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)

at org.eclipse.swt.widgets.Display.syncExec(Display.java:4814)

at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:211)

at com.kms.katalon.composer.components.services.UISynchronizeService.syncExec(UISynchronizeService.java:26)

at com.kms.katalon.composer.mobile.recorder.components.MobileRecorderDialog$13.refreshTreeElements(MobileRecorderDialog.java:1036)

at com.kms.katalon.composer.mobile.recorder.components.MobileRecorderDialog$13.run(MobileRecorderDialog.java:1013)

at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)

Caused by: org.eclipse.core.runtime.AssertionFailedException: null argument:

at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)

at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73)

at org.eclipse.jface.viewers.StructuredViewer.assertElementsNotNull(StructuredViewer.java:586)

at org.eclipse.jface.viewers.StructuredViewer.getRawChildren(StructuredViewer.java:1002)

at org.eclipse.jface.viewers.ColumnViewer.getRawChildren(ColumnViewer.java:701)

at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1349)

at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:341)

at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(StructuredViewer.java:907)

at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:621)

at org.eclipse.jface.viewers.AbstractTreeViewer.lambda$0(AbstractTreeViewer.java:817)

at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)

at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:795)

at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:596)

at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:766)

at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1538)

at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:772)

at org.eclipse.jface.viewers.AbstractTreeViewer.lambda$1(AbstractTreeViewer.java:1523)

at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1458)

at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:354)

at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1419)

at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1517)

at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:286)

at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1696)

at com.kms.katalon.composer.mobile.recorder.components.MobileRecorderDialog$13$3.run(MobileRecorderDialog.java:1039)

at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)

at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)

at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4032)

at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3708)

at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:165)

at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:369)

at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:481)

at com.kms.katalon.composer.mobile.recorder.components.MobileRecorderDialog.captureObjectAction(MobileRecorderDialog.java:1066)

at com.kms.katalon.composer.mobile.recorder.components.MobileRecorderDialog.startObjectInspectorAction(MobileRecorderDialog.java:955)

at com.kms.katalon.composer.mobile.recorder.components.MobileRecorderDialog.access$18(MobileRecorderDialog.java:935)

at com.kms.katalon.composer.mobile.recorder.components.MobileRecorderDialog$16.widgetSelected(MobileRecorderDialog.java:1161)

at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:249)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4256)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1501)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1509)

at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1313)

at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4080)

at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3706)

at org.eclipse.jface.window.Window.runEventLoop(Window.java:818)

at org.eclipse.jface.window.Window.open(Window.java:794)

at com.kms.katalon.composer.mobile.recorder.handlers.OpenIosRecorderHandler.openRecorderDialog(OpenIosRecorderHandler.java:110)

at com.kms.katalon.composer.mobile.recorder.handlers.OpenIosRecorderHandler.execute(OpenIosRecorderHandler.java:95)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55)

at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:282)

at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:264)

at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)

at org.eclipse.e4.ui.workbench.renderers.swt.DirectContributionItem.executeItem(DirectContributionItem.java:130)

at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.handleWidgetSelection(AbstractContributionItem.java:454)

at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem$3.handleEvent(AbstractContributionItem.java:482)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4256)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1501)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1509)

at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1313)

at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4080)

at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3706)

at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.dropdownEvent(AbstractContributionItem.java:430)

at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.handleWidgetSelection(AbstractContributionItem.java:441)

at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem$3.handleEvent(AbstractContributionItem.java:482)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4256)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1501)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1509)

at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1313)

at com.kms.katalon.composer.mobile.recorder.handlers.OpenMobileRecorderHandler.execute(OpenMobileRecorderHandler.java:30)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55)

at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:282)

at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:264)

at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)

at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:152)

at org.eclipse.core.commands.Command.executeWithChecks(Command.java:494)

at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:488)

at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)

at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:433)

at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.handleWidgetSelection(AbstractContributionItem.java:454)

at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem$3.handleEvent(AbstractContributionItem.java:482)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4256)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1501)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1509)

at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1313)

at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4080)

at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3706)

at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1121)

at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)

at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1022)

at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:150)

at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:693)

at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)

at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:610)

at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)

at com.kms.katalon.core.application.Application.internalRunGUI(Application.java:173)

at com.kms.katalon.core.application.Application.runGUI(Application.java:163)

at com.kms.katalon.core.application.Application.start(Application.java:82)

at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)

at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)

at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)

at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)

at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)

at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)

at org.eclipse.equinox.launcher.Main.run(Main.java:1519)

Hi @jacktan,

I’m using the same setup and able to record tests. Could you verify that your settings in Katalon Studio->Preferences->Katalon->Mobile for “Appium Directory” look something like this:

– Chris

yes it is


is there any thing that i possibly missed during set up
anyway i will try again
update : no luck