This is a companion discussion topic for the original entry at https://docs.katalon.com/katalon-studio/docs/katalon-studio-preferences.html
This is a companion discussion topic for the original entry at https://docs.katalon.com/katalon-studio/docs/katalon-studio-preferences.html
There is no documentation on Cucumber preferences in Katalon Studio. There are two preferences panels realated with Cucumber:
- Window > Katalon Studio Preferences … > Cucumber and
- Window > Katalon Studio Preferences … > Cucumber > User Settings
I will be thankfull if some one could add documentation for both panels
Hello,
what is the syntax for exclusion list in proxy settings ? ( In Katalon Studio> Preferences > Katalon > Proxy )
I put “*.mycompany.fr” in it, but it generates PatternSyntaxException in Katalon log.
If I put "mycompany.fr, exclusion list does no more throw exception, but does not work also…
detail of logs :
Thu Mar 12 11:48:51 CET 2020
Activation collection is failed
com.kms.katalon.integration.analytics.exceptions.AnalyticsApiExeception: java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
*.mycompany.fr
^
at com.kms.katalon.integration.analytics.exceptions.AnalyticsApiExeception.wrap(AnalyticsApiExeception.java:23)
at com.kms.katalon.integration.analytics.providers.AnalyticsApiProvider.requestToken(AnalyticsApiProvider.java:128)
at com.kms.katalon.integration.analytics.providers.TestOpsFeatureActivatorImpl.connect(TestOpsFeatureActivatorImpl.java:41)
at com.kms.katalon.application.utils.ActivationInfoCollector.getLicenseFromTestOps(ActivationInfoCollector.java:497)
at com.kms.katalon.application.utils.ActivationInfoCollector.activate(ActivationInfoCollector.java:385)
at com.kms.katalon.application.utils.ActivationInfoCollector.checkAndMarkActivatedForGUIMode(ActivationInfoCollector.java:140)
at com.kms.katalon.core.application.ApplicationStaupHandler.lambda$2(ApplicationStaupHandler.java:81)
at com.kms.katalon.application.utils.ActivationInfoCollector.lambda$1(ActivationInfoCollector.java:796)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
*.mycompany.fr
^
at java.util.regex.Pattern.error(Pattern.java:1957)
at java.util.regex.Pattern.sequence(Pattern.java:2125)
at java.util.regex.Pattern.expr(Pattern.java:1998)
at java.util.regex.Pattern.compile(Pattern.java:1698)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at com.kms.katalon.core.util.internal.ProxyUtil.excludes(ProxyUtil.java:115)
at com.kms.katalon.core.util.internal.ProxyUtil.getProxy(ProxyUtil.java:80)
at com.kms.katalon.core.network.HttpClientProxyBuilder.create(HttpClientProxyBuilder.java:149)
at com.kms.katalon.integration.analytics.providers.AnalyticsApiProvider.executeRequest(AnalyticsApiProvider.java:501)
at com.kms.katalon.integration.analytics.providers.AnalyticsApiProvider.executeRequest(AnalyticsApiProvider.java:533)
at com.kms.katalon.integration.analytics.providers.AnalyticsApiProvider.requestToken(AnalyticsApiProvider.java:126)
... 13 more
Furthermore, I have a side effect that is quite annoying : Now that I exited Katalon7, I cannot launch it again because it is crashing during checking activation at startup.
But I can nomore modify Exclusion list as it is not displayed in activation proxy screen…
Is there a file where I can modify this exclusion list in order to be able to launch Katalon 7 again ?
Hi @staniere,
Regarding your first question, please use .*.mycompany.fr
(with .
before *
).
For your second question, please go to <Your_Katalon_Installation_Folder>/config/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.kms.katalon.execution.prefs and change the line with proxy.excludes
to the correct value.
thank you huynguyen for your answers.
It allowed me to get again Katalon 7 working.
But it could be usefull to complete your documentation https://docs.katalon.com/katalon-studio/docs/katalon-studio-preferences.html#proxy-preferences
Manual proxy configuration : you can manually set up your proxy.
- Address: a HTTP Proxy host.
- Port: a HTTP Proxy port.
- Excludes: A list of addresses separated by comma to exclude.
Add some example may be usefull for another users (for one address or several adresses)
This field would be quite more easy to use if we could put classical proxy exclusion list as “*.mycompany.fr,*.othercompany.com”
But if we have to use regex, please put it in documentation !
Hi @staniere,
Thank you for your idea. We will update the documentation accordingly.
Why PROXY password is visible in “Test Log”. Some people have to use domain passwords not just “MySimpleProxyPswd”. PROXY password should be mask with stars “****”.
Window > Katalon Studio Preferences > General > Network Connections
What are these settings for?
This is way too many steps!
There needs to be a single method to export and import all settings.
Could someone indicate how to disable .har files in Katalon?
Hi @dongyu.zhou
Currently, the ability to disable HAR file generation is not available yet and we’re planning to support it in 8.2 that’s tentatively available in late November.
Meanwhile, please try the following workaround:
-
Disable “Log executed test step“ in Project Settings/Execution
-
Create package
com.kms.katalon.core.webservice.keyword.builtin
in Keywords folder
- Create class
SendRequestKeyword
with the following content:
package com.kms.katalon.core.webservice.keyword.builtin
import com.kms.katalon.core.annotation.internal.Action
import com.kms.katalon.core.configuration.RunConfiguration
import com.kms.katalon.core.keyword.internal.KeywordMain
import com.kms.katalon.core.keyword.internal.SupportLevel
import com.kms.katalon.core.model.FailureHandling
import com.kms.katalon.core.testobject.RequestObject
import com.kms.katalon.core.testobject.ResponseObject
import com.kms.katalon.core.webservice.common.HarLogger
import com.kms.katalon.core.webservice.common.ServiceRequestFactory
import com.kms.katalon.core.webservice.constants.StringConstants
import com.kms.katalon.core.webservice.helper.WebServiceCommonHelper
import com.kms.katalon.core.webservice.keyword.internal.WebserviceAbstractKeyword
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import groovy.transform.CompileStatic
@Action(value = "sendRequest")
public class SendRequestKeyword extends WebserviceAbstractKeyword {
@CompileStatic
@Override
public SupportLevel getSupportLevel(Object ...params) {
return super.getSupportLevel(params)
}
@CompileStatic
@Override
public Object execute(Object ...params) {
RequestObject request = (RequestObject) params[0]
FailureHandling flowControl = (FailureHandling)(params.length > 1 && params[1] instanceof FailureHandling ? params[1] : RunConfiguration.getDefaultFailureHandling())
return sendRequest(request,flowControl)
}
@CompileStatic
public ResponseObject sendRequest(RequestObject request, FailureHandling flowControl) throws Exception {
Object object = KeywordMain.runKeyword({
WebServiceCommonHelper.checkRequestObject(request)
HarLogger harLogger = new HarLogger()
harLogger.initHarFile()
ResponseObject responseObject = WebServiceCommonHelper.sendRequest(request)
// harLogger.logHarFile(request, responseObject, RunConfiguration.getReportFolder())
logger.logPassed(StringConstants.KW_LOG_PASSED_SEND_REQUEST_SUCCESS)
return responseObject
}, flowControl, StringConstants.KW_LOG_FAILED_CANNOT_SEND_REQUEST)
if (object instanceof ResponseObject) {
return (ResponseObject) object
}
return null
}
}
- Create
SendRequestAndVerifyKeyword
package com.kms.katalon.core.webservice.keyword.builtin
import com.kms.katalon.core.annotation.internal.Action
import com.kms.katalon.core.configuration.RunConfiguration
import com.kms.katalon.core.exception.StepErrorException
import com.kms.katalon.core.exception.StepFailedException
import com.kms.katalon.core.keyword.internal.KeywordMain
import com.kms.katalon.core.keyword.internal.SupportLevel
import com.kms.katalon.core.logging.model.TestStatus
import com.kms.katalon.core.main.TestCaseMain
import com.kms.katalon.core.main.TestResult
import com.kms.katalon.core.model.FailureHandling
import com.kms.katalon.core.testcase.TestCaseBinding
import com.kms.katalon.core.testobject.RequestObject
import com.kms.katalon.core.testobject.ResponseObject
import com.kms.katalon.core.webservice.common.HarLogger
import com.kms.katalon.core.webservice.common.ServiceRequestFactory
import com.kms.katalon.core.webservice.constants.StringConstants
import com.kms.katalon.core.webservice.helper.WebServiceCommonHelper
import com.kms.katalon.core.webservice.keyword.internal.WebserviceAbstractKeyword
import com.kms.katalon.core.webservice.verification.WSResponseManager
import groovy.transform.CompileStatic
@Action(value = "sendRequestAndVerify")
public class SendRequestAndVerifyKeyword extends WebserviceAbstractKeyword {
@CompileStatic
@Override
public SupportLevel getSupportLevel(Object ...params) {
return super.getSupportLevel(params)
}
@CompileStatic
@Override
public Object execute(Object ...params) {
RequestObject request = (RequestObject) params[0]
FailureHandling flowControl = (FailureHandling)(params.length > 1 && params[1] instanceof FailureHandling ? params[1] : RunConfiguration.getDefaultFailureHandling())
return sendRequestAndVerify(request,flowControl)
}
@CompileStatic
public ResponseObject sendRequestAndVerify(RequestObject request, FailureHandling flowControl) throws Exception {
Object object = KeywordMain.runKeyword({
WebServiceCommonHelper.checkRequestObject(request)
HarLogger harLogger = new HarLogger()
harLogger.initHarFile()
ResponseObject responseObject = WebServiceCommonHelper.sendRequest(request)
// harLogger.logHarFile(request, responseObject, RunConfiguration.getReportFolder())
logger.logDebug(StringConstants.KW_LOG_INFO_VERIFICATION_START)
String verificationScript = request.getVerificationScript()
WSResponseManager.getInstance().setCurrentRequest(request)
WSResponseManager.getInstance().setCurrentResponse(responseObject)
TestResult result = TestCaseMain.runWSVerificationScript(createTestCaseBinding(request),
verificationScript, flowControl, true)
switch(result.getTestStatus().getStatusValue()) {
case TestStatus.TestStatusValue.FAILED:
throw new StepFailedException(StringConstants.KW_LOG_VERIFICATION_STEP_FAILED)
break
case TestStatus.TestStatusValue.ERROR:
throw new StepErrorException(StringConstants.KW_LOG_VERIFICATION_STEP_FAILED_BECAUSE_OF_ERROR)
break
case TestStatus.TestStatusValue.PASSED:
logger.logPassed(StringConstants.KW_LOG_VERIFICATION_STEP_PASSED)
break
default:
break
}
logger.logPassed(StringConstants.KW_LOG_PASSED_SEND_REQUEST_AND_VERIFY_SUCCESS)
return responseObject
}, flowControl, StringConstants.KW_LOG_FAILED_CANNOT_SEND_REQUEST_AND_VERIFY)
if (object instanceof ResponseObject) {
return (ResponseObject) object
}
return null
}
private TestCaseBinding createTestCaseBinding(RequestObject requestObject) {
Map<String, Object> variables = new HashMap<String, Object>()
TestCaseBinding testCaseBinding = new TestCaseBinding(requestObject.getName(), variables);
return testCaseBinding;
}
}
Happy Testing
Jass
Do anyone know how to add specific packages from here
Window > Katalon Studio Preferences … > Cucumber ?
In that way, we can let cucumber scan only specific packages instead of scanning whole package ?