Giter VIP home page Giter VIP logo

katalon-gradle-plugin's Introduction

Katalon Studio's Gradle Plugin

This Gradle plugin helps simplify/automate some tasks in Katalon Studio. It is published at https://plugins.gradle.org/plugin/com.katalon.gradle-plugin.

How to build and test

  • Build Run gradle build
  • Test
    Suggestion plugin: katalon-studio-zip-keywords-plugin
    Remove line 'com.katalon.gradle-plugin' version '<version>'
    Adding this script to the build.gradle file in the tested plugin.
buildscript{
    dependencies{
        classpath files('<path>/katalon-gradle-plugin-<version>.jar')
    }
}
.....
apply plugin: com.katalon.gradle.plugin.KatalonGradlePlugin

Gradle Tasks

  • katalonCopyDependencies
  • katalonListTestCases
  • katalonListTestSuites

Sample

Please see https://github.com/katalon-studio-samples/framework-integration.

Tutorial: Automatically download dependencies for Katalon Studio projects

Install Gradle

Please follow this guide to install Gradle on your machine.

Add build.gradle file

Add a build.gradle file inside Katalon Studio project contains the below code. Dependencies can be changed or modified based on your libraries prerferences.

plugins {
  id 'java-library'
  id "com.katalon.gradle-plugin" version "0.1.2"
}

repositories {
  mavenCentral()
}

dependencies {
  // sample dependencies
  // rest-assured
  implementation 'io.rest-assured:rest-assured:3.2.0'
  // JsonPath
  implementation 'io.rest-assured:json-path:3.2.0'
  // XmlPath
  implementation 'io.rest-assured:json-path:3.2.0'
  // JSON Schema Validation
  implementation 'io.rest-assured:json-schema-validator:3.2.0'
}

Download the dependencies

Due to the way Java loading libraries, please close all Katalon Studio applications before execute the following command, and re-open it after the command has been completed.

gradle katalonCopyDependencies

License

Copyright (c) Katalon LLC. All rights reserved.

Licensed under the LICENSE AGREEMENT FOR KATALON AUTOMATION FRAMEWORK.

Companion products

Katalon TestOps

Katalon TestOps is a web-based application that provides dynamic perspectives and an insightful look at your automation testing data. You can leverage your automation testing data by transforming and visualizing your data; analyzing test results; seamlessly integrating with such tools as Katalon Studio and Jira; maximizing the testing capacity with remote execution.

Katalon Studio

Katalon Studio is a free and complete automation testing solution for Web, Mobile, and API testing with modern methodologies (Data-Driven Testing, TDD/BDD, Page Object Model, etc.) as well as advanced integration (JIRA, qTest, Slack, CI, Katalon TestOps, etc.). Learn more about Katalon Studio features.

katalon-gradle-plugin's People

Contributors

devalex88 avatar duyluonganh avatar hieubui419 avatar linhtnlk avatar longngbui avatar minhhai2209 avatar thongmgnguyen avatar thvu-katalon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

katalon-gradle-plugin's Issues

Please rename this project: gradle-plugin -> katalon-gradle-plugin

When I git cloned this project, I got a new directory ~/workspace/gradle-plugin
Then I tried to import it as a Gradle project in Eclipse.
Eclipse failed.

The settings.gradle file contains:

rootProject.name="katalon-gradle-plugin"

With this info, Eclipse expects the project directory should be named katalon-plugin, but in fact it is gradle-plugin. Therefore Eclipse fails.

Please rename this Github project to be katalon-gradle-plugin.

testCompile option is not supported

Hi,
I am trying to use Karate framework within Katalon Studio and I wanted to use gradle-plugin for this.
However, to install Karate we need to use testCompile instead of compile option (https://github.com/intuit/karate#gradle) and when I build with gradle katalonCopyDependencies it says everything was successful but nothing is added to the Drivers folder.

If I change to use compile instead of testCompile it works and it brings needed dependencies but I think gradle-plugin should support testCompile and other gradle native options.

Thanks,
Rasko

Task to bundle Katalon Studio project along with custom keywords and dependencies

Add a new bundle task that:

  • Bundle project's classes into Jar package along with user-defined keywords and dependencies
  • The dependencies are specified in Eclipse .classpath is parsed and programatically added to build.gradle
  • Minimize output package by removing unused dependencies
  • Allow customization of package minimization and package relocation

org.gradle.api.UncheckedIOException: Failed to create directory '/Drivers'

I created a build.gradle:

plugins {
    id 'groovy'
    id 'com.katalon.gradle-plugin' version "0.0.4"
}
repositories {
    mavenCentral()
}
dependencies {
  // https://mvnrepository.com/artifact/org.gebish/geb-core
  compile group: 'org.gebish', name: 'geb-core', version: '2.2'
}

When I did "$ gradle katalonCopyDependencies --stacktrace", it failed with the following stack trace.

:GebInKatalonStudio$ gradle katalonCopyDependencies --stacktrace

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':katalonCopyDependencies'.
> Could not copy file '/Users/urayamakazuaki/.gradle/caches/modules-2/files-2.1/org.gebish/geb-core/2.2/afb9a9e8d6ec4e90f01f5f1db67af0410e7b16b7/geb-core-2.2.jar' to '/Drivers/katalon_generated_geb-core-2.2.jar'.

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':katalonCopyDependencies'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:103)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
        at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
        at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.api.GradleException: Could not copy file '/Users/urayamakazuaki/.gradle/caches/modules-2/files-2.1/org.gebish/geb-core/2.2/afb9a9e8d6ec4e90f01f5f1db67af0410e7b16b7/geb-core-2.2.jar' to '/Drivers/katalon_generated_geb-core-2.2.jar'.
        at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:79)
        at org.gradle.api.internal.file.copy.DefaultFileCopyDetails.copyTo(DefaultFileCopyDetails.java:106)
        at org.gradle.api.internal.file.copy.FileCopyAction$FileCopyDetailsInternalAction.processFile(FileCopyAction.java:44)
        at org.gradle.api.internal.file.copy.NormalizingCopyActionDecorator$1$1.processFile(NormalizingCopyActionDecorator.java:66)
        at org.gradle.api.internal.file.copy.DuplicateHandlingCopyActionDecorator$1$1.processFile(DuplicateHandlingCopyActionDecorator.java:60)
        at org.gradle.api.internal.file.copy.CopyFileVisitorImpl.processFile(CopyFileVisitorImpl.java:62)
        at org.gradle.api.internal.file.copy.CopyFileVisitorImpl.visitFile(CopyFileVisitorImpl.java:46)
        at org.gradle.api.internal.file.AbstractFileTree$FilteredFileTreeImpl$1.visitFile(AbstractFileTree.java:198)
        at org.gradle.api.internal.file.collections.SingletonFileTree.visit(SingletonFileTree.java:42)
        at org.gradle.api.internal.file.collections.FileTreeAdapter.visit(FileTreeAdapter.java:116)
        at org.gradle.api.internal.file.AbstractFileTree$FilteredFileTreeImpl.visit(AbstractFileTree.java:189)
        at org.gradle.api.internal.file.CompositeFileTree.visit(CompositeFileTree.java:87)
        at org.gradle.api.internal.file.copy.CopySpecActionImpl.execute(CopySpecActionImpl.java:39)
        at org.gradle.api.internal.file.copy.CopySpecActionImpl.execute(CopySpecActionImpl.java:24)
        at org.gradle.api.internal.file.copy.DefaultCopySpec$DefaultCopySpecResolver.walk(DefaultCopySpec.java:648)
        at org.gradle.api.internal.file.copy.DefaultCopySpec.walk(DefaultCopySpec.java:458)
        at org.gradle.api.internal.file.copy.DelegatingCopySpecInternal.walk(DelegatingCopySpecInternal.java:236)
        at org.gradle.api.internal.file.copy.CopySpecBackedCopyActionProcessingStream.process(CopySpecBackedCopyActionProcessingStream.java:38)
        at org.gradle.api.internal.file.copy.DuplicateHandlingCopyActionDecorator$1.process(DuplicateHandlingCopyActionDecorator.java:44)
        at org.gradle.api.internal.file.copy.NormalizingCopyActionDecorator$1.process(NormalizingCopyActionDecorator.java:57)
        at org.gradle.api.internal.file.copy.FileCopyAction.execute(FileCopyAction.java:35)
        at org.gradle.api.internal.file.copy.NormalizingCopyActionDecorator.execute(NormalizingCopyActionDecorator.java:53)
        at org.gradle.api.internal.file.copy.DuplicateHandlingCopyActionDecorator.execute(DuplicateHandlingCopyActionDecorator.java:42)
        at org.gradle.api.internal.file.copy.CopyActionExecuter.execute(CopyActionExecuter.java:40)
        at org.gradle.api.internal.file.copy.FileCopier.doCopy(FileCopier.java:67)
        at org.gradle.api.internal.file.copy.FileCopier.copy(FileCopier.java:52)
        at org.gradle.api.internal.file.DefaultFileOperations.copy(DefaultFileOperations.java:158)
        at org.gradle.api.internal.project.DefaultProject.copy(DefaultProject.java:1041)
        at com.katalon.gradle.plugin.CopyDependencyTask.copy(CopyDependencyTask.java:22)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:788)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:755)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
        ... 30 more
Caused by: org.gradle.api.UncheckedIOException: Failed to create directory '/Drivers'
        at org.gradle.util.GFileUtils.mkdirs(GFileUtils.java:277)
        at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:73)
        ... 71 more


* Get more help at https://help.gradle.org

In https://github.com/katalon-studio/gradle-plugin/blob/master/src/main/java/com/katalon/gradle/plugin/CopyDependencyTask.java

            .into("/Drivers")

This looks to be an absolute path. How can it point to the /Drivers folder?

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.

In my Katalon Studio project I used this plugin.

build.gradle is

plugins {
    id "com.katalon.gradle-plugin" version "0.0.7"
}

ext {
    ExecutionProfilesLoaderVersion = "1.2.0"
    materialstoreVersion = '0.1.0'
    ashotVersion = '1.5.4'
    javadiffutilsVersion= '4.9'
    jsoupVersion = '1.7.2'
}

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    compile group: 'com.kazurayam', name: 'materialstore', version: "${materialstoreVersion}"
    compile group: 'com.kazurayam', name: 'ExecutionProfilesLoader', version: "${ExecutionProfilesLoaderVersion}"
    // https://mvnrepository.com/artifact/ru.yandex.qatools.ashot/ashot
    compile group: 'ru.yandex.qatools.ashot', name: 'ashot', version: "${ashotVersion}"
    // https://mvnrepository.com/artifact/io.github.java-diff-utils/java-diff-utils
    compile group: 'io.github.java-diff-utils', name: 'java-diff-utils', version: "${javadiffutilsVersion}"
    // https://mvnrepository.com/artifact/org.jsoup/jsoup
    compile group: 'org.jsoup', name: 'jsoup', version: "${jsoupVersion}"
}

When I run this with Gradle ver 6.4.1, I got a warning message.

:~/katalon-workspace/VisualTestingInKatalonStudio_revive (master)
$ gradle katalonCopyDependencies  --warning-mode all

> Configure project :
The compile configuration has been deprecated for dependency declaration. This will fail with an error in Gradle 7.0. Please use the implementation configuration instead. Consult the upgrading guide for further information: https://docs.gradle.org/6.4.1/userguide/upgrading_version_5.html#dependencies_should_no_longer_be_declared_using_the_compile_and_runtime_configurations
        at build_dnrr3y2m06sqp14pdi4iwjjsl$_run_closure3.doCall(/Users/kazuakiurayama/katalon-workspace/VisualTestingInKatalonStudio_revive/build.gradle:20)
        (Run with --stacktrace to get the full stack trace of this deprecation warning.)

> Task :katalonCopyDependencies

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.4.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed

As the message says the compile configuration will be deprecated. Gradle 7.0 is already out there.

I tried the same build.gradle with Gradle ver 7.x. It failed.

The katalon-gradle-plugin does not run on Gradle ver7.x.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.