Error when using visual testing with iPhone

Operating System: 13.5.2 (22G91)

Katalon Studio version: 8.5.4 beta2

Environment (for Mobile testing)

  • Appium version: 2.1.3
  • Mobile platform/version under test: iOS 16.6
  • Real device or emulator/simulator: iPhone 8 plus
  • Xcode version (for iOS): Version 14.3.1 (14E300c)

Steps to reproduce

Calling the Mobile.takeScreenshotAsCheckpoint function fails

**Log Error **

2023-09-29 15:42:18.493 INFO c.k.katalon.core.main.TestCaseExecutor - --------------------
2023-09-29 15:42:18.495 INFO c.k.katalon.core.main.TestCaseExecutor - START Test Cases/Pruebas/prueba-VT-katalon
2023-09-29 15:42:18.660 WARN c.k.katalon.core.logging.KeywordLogger - Please use “KeywordUtil.logInfo()” instead of “new KeywordLogger()” constructor. “KeywordLogger” is an internal API and might be changed in the future.
2023-09-29 15:42:18.677 INFO k.k.c.m.CustomKeywordDelegatingMetaClass - com.kms.katalon.keyword.testsuite.RerunKeyword.isStringBelongToList is PASSED
2023-09-29 15:42:18.787 DEBUG testcase.prueba-VT-katalon - 1: iosDriver =
2023-09-29 15:42:18.788 DEBUG testcase.prueba-VT-katalon - 2: capabilities = new org.openqa.selenium.remote.DesiredCapabilities()
2023-09-29 15:42:18.800 DEBUG testcase.prueba-VT-katalon - 3: capabilities.setCapability(“appium:autoGrantPermissions”, true)
2023-09-29 15:42:18.802 DEBUG testcase.prueba-VT-katalon - 4: capabilities.setCapability(“appium:newCommandTimeout”, 1800)
2023-09-29 15:42:18.805 DEBUG testcase.prueba-VT-katalon - 5: capabilities.setCapability(“appium:automationName”, “XCUITest”)
2023-09-29 15:42:18.807 DEBUG testcase.prueba-VT-katalon - 6: capabilities.setCapability(“platformName”, “iOS”)
2023-09-29 15:42:18.808 DEBUG testcase.prueba-VT-katalon - 7: capabilities.setCapability(“appium:platformVersion”, “16.6”)
2023-09-29 15:42:18.809 DEBUG testcase.prueba-VT-katalon - 8: capabilities.setCapability(“waitForAppScript”, “true”)
2023-09-29 15:42:18.809 DEBUG testcase.prueba-VT-katalon - 9: capabilities.setCapability(“appium:bundleId”, “com.innocv.BMI”)
2023-09-29 15:42:18.810 DEBUG testcase.prueba-VT-katalon - 10: capabilities.setCapability(“appium:realDeviceLogger”, “/Applications/Katalon Studio 8.5.4 appium2.app/Contents/Eclipse/configuration/resources/tools/deviceconsole”)
2023-09-29 15:42:18.811 DEBUG testcase.prueba-VT-katalon - 11: capabilities.setCapability(“appium:deviceId”, “”)
2023-09-29 15:42:18.811 DEBUG testcase.prueba-VT-katalon - 12: capabilities.setCapability(“appium:udid”, “2a23aaac2db92466f13a6fb869d5ecfa20f2cb01”)
2023-09-29 15:42:18.812 DEBUG testcase.prueba-VT-katalon - 13: iosDriver = new io.appium.java_client.ios.IOSDriver(new java.net.URL(http://127.0.0.1:4723), capabilities)
sep 29, 2023 3:42:26 PM io.appium.java_client.remote.AppiumCommandExecutor$1 lambda$0
INFORMACIÓN: Detected dialect: W3C
2023-09-29 15:42:26.826 DEBUG testcase.prueba-VT-katalon - 14: iosDriver.activateApp(iosId)
2023-09-29 15:42:27.837 DEBUG testcase.prueba-VT-katalon - 15: setDriver(iosDriver)
2023-09-29 15:42:27.859 DEBUG testcase.prueba-VT-katalon - 16: takeScreenshotAsCheckpoint(“008”)
2023-09-29 15:42:28.527 ERROR c.k.k.core.keyword.internal.KeywordMain - :x: Unable to take screenshot (Root cause: java.lang.NullPointerException
at com.kms.katalon.core.mobile.helper.MobileCommonHelper.getStatusBarHeight(MobileCommonHelper.java:218)
at com.kms.katalon.core.mobile.helper.MobileScreenCaptor.takeViewportScreenshot(MobileScreenCaptor.java:131)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword$_takeScreenshot_closure1.doCall(TakeScreenshotKeyword.groovy:104)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword$_takeScreenshot_closure1.call(TakeScreenshotKeyword.groovy)
at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain.runKeyword(MobileKeywordMain.groovy:21)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword.takeScreenshot(TakeScreenshotKeyword.groovy:93)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword.execute(TakeScreenshotKeyword.groovy:53)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:74)
at com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords.takeScreenshotAsCheckpoint(MobileBuiltInKeywords.groovy:379)
at com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords$takeScreenshotAsCheckpoint.call(Unknown Source)
at prueba-VT-katalon.run(prueba-VT-katalon:28)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:448)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:439)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:418)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:410)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:285)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:142)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:133)
at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
at TempTestCase1695994926323.run(TempTestCase1695994926323.groovy:25)
)
2023-09-29 15:42:28.530 ERROR c.k.katalon.core.main.TestCaseExecutor - :x: Test Cases/Pruebas/prueba-VT-katalon FAILED.
Reason:
com.kms.katalon.core.exception.StepFailedException: Unable to take screenshot (Root cause: java.lang.NullPointerException
at com.kms.katalon.core.mobile.helper.MobileCommonHelper.getStatusBarHeight(MobileCommonHelper.java:218)
at com.kms.katalon.core.mobile.helper.MobileScreenCaptor.takeViewportScreenshot(MobileScreenCaptor.java:131)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword$_takeScreenshot_closure1.doCall(TakeScreenshotKeyword.groovy:104)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword$_takeScreenshot_closure1.call(TakeScreenshotKeyword.groovy)
at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain.runKeyword(MobileKeywordMain.groovy:21)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword.takeScreenshot(TakeScreenshotKeyword.groovy:93)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword.execute(TakeScreenshotKeyword.groovy:53)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:74)
at com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords.takeScreenshotAsCheckpoint(MobileBuiltInKeywords.groovy:379)
at com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords$takeScreenshotAsCheckpoint.call(Unknown Source)
at prueba-VT-katalon.run(prueba-VT-katalon:28)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:448)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:439)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:418)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:410)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:285)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:142)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:133)
at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
at TempTestCase1695994926323.run(TempTestCase1695994926323.groovy:25)
)
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy:50)
at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain.stepFailed(MobileKeywordMain.groovy:40)
at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain.runKeyword(MobileKeywordMain.groovy:23)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword.takeScreenshot(TakeScreenshotKeyword.groovy:93)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword.execute(TakeScreenshotKeyword.groovy:53)
at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:74)
at com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords.takeScreenshotAsCheckpoint(MobileBuiltInKeywords.groovy:379)
at com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords$takeScreenshotAsCheckpoint.call(Unknown Source)
at prueba-VT-katalon.run(prueba-VT-katalon:28)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:448)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:439)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:418)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:410)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:285)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:142)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:133)
at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
at TempTestCase1695994926323.run(TempTestCase1695994926323.groovy:25)
Caused by: java.lang.NullPointerException
at com.kms.katalon.core.mobile.helper.MobileCommonHelper.getStatusBarHeight(MobileCommonHelper.java:218)
at com.kms.katalon.core.mobile.helper.MobileScreenCaptor.takeViewportScreenshot(MobileScreenCaptor.java:131)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword$_takeScreenshot_closure1.doCall(TakeScreenshotKeyword.groovy:104)
at com.kms.katalon.core.mobile.keyword.builtin.TakeScreenshotKeyword$_takeScreenshot_closure1.call(TakeScreenshotKeyword.groovy)
at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain.runKeyword(MobileKeywordMain.groovy:21)
… 17 more

2023-09-29 15:42:28.534 INFO k.k.c.m.CustomKeywordDelegatingMetaClass - com.kms.katalon.keyword.testsuite.RerunKeyword.isStringBelongToList is PASSED
2023-09-29 15:42:28.535 INFO k.k.c.m.CustomKeywordDelegatingMetaClass - com.kms.katalon.keyword.testsuite.RerunKeyword.isStringBelongToList is PASSED
2023-09-29 15:42:28.539 INFO c.k.katalon.core.main.TestCaseExecutor - END Test Cases/Pruebas/prueba-VT-katalon


Test case:


import org.openqa.selenium.remote.DesiredCapabilities
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.mobile.keyword.internal.MobileDriverFactory
import internal.GlobalVariable
import io.appium.java_client.ios.IOSDriver

IOSDriver iosDriver

DesiredCapabilities capabilities = new DesiredCapabilities()
capabilities.setCapability(“appium:autoGrantPermissions”, true)
capabilities.setCapability(“appium:newCommandTimeout”, 1800)
capabilities.setCapability(“appium:automationName”, “XCUITest”)
capabilities.setCapability(“platformName”, “iOS”)
capabilities.setCapability(“appium:platformVersion”, “16.6”)
capabilities.setCapability(“waitForAppScript”, “true”)
capabilities.setCapability(“appium:bundleId”, “com.innocv.BMI”)
capabilities.setCapability(“appium:realDeviceLogger”, “/Applications/Katalon Studio 8.5.4 appium2.app/Contents/Eclipse/configuration/resources/tools/deviceconsole”)
capabilities.setCapability(“appium:deviceId”, “”)
capabilities.setCapability(“appium:udid”, “2a23aaac2db92466f13a6fb869d5ecfa20f2cb01”)

iosDriver = new IOSDriver(new URL(“http://127.0.0.1:4723”), capabilities)
iosDriver.activateApp(GlobalVariable.iosId)
MobileDriverFactory.setDriver( iosDriver)

Mobile.takeScreenshotAsCheckpoint(‘008’)


3 Likes

Hi em, could you take a look at this topic? Thanks

Hi,

I would like to clarify more on the issue that the keyword Mobile.takeScreenshotAsCheckpoint cannot capture full screenshot, is this correct? If yes, the bug has been addressed and we plan to fix it in v9.1.0.

1 Like

That is, I can’t capture any screenshot, neither full nor partial.

Yeah, hope that v9.1.0 can fix this problem. Thank you!

1 Like