Skip to content

Commit

Permalink
split the single gradle project to subprojects
Browse files Browse the repository at this point in the history
+ extract `junit4` subproject
+ extract `testng` subproject
+ extract `grid` subproject
  • Loading branch information
asolntsev committed Dec 9, 2020
1 parent ae30316 commit 24f01d8
Show file tree
Hide file tree
Showing 45 changed files with 244 additions and 232 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Expand Up @@ -11,7 +11,7 @@ jobs:
strategy:
fail-fast: false
matrix:
gradle-task: [ 'check', 'grid', 'firefox_headless', 'chrome_headless' ]
gradle-task: [ 'check', 'firefox_headless', 'chrome_headless' ]
steps:
- name: Checkout
uses: actions/checkout@v2
Expand Down
7 changes: 5 additions & 2 deletions build.gradle
Expand Up @@ -8,12 +8,15 @@ plugins {
id 'org.sonarqube' version '3.0'
}

allprojects {
apply plugin: 'java'
}

group = 'com.codeborne'
archivesBaseName = 'selenide'
version = '5.16.2'
version = '5.17.0-SNAPSHOT'

apply from: rootProject.file('gradle/compilation.gradle')
apply from: rootProject.file('gradle/source-sets.gradle')
apply from: rootProject.file('gradle/dependencies.gradle')
apply from: rootProject.file('gradle/code-analysis.gradle')
apply from: rootProject.file('gradle/coverage.gradle')
Expand Down
4 changes: 4 additions & 0 deletions gradle.properties
@@ -1,3 +1,7 @@
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx256m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

org.gradle.caching=true
org.gradle.console=rich
org.gradle.logging.level=lifecycle
20 changes: 11 additions & 9 deletions gradle/compilation.gradle
@@ -1,11 +1,13 @@
ext {
encoding = 'UTF-8'
}
allprojects {
ext {
encoding = 'UTF-8'
}

tasks.withType(JavaCompile) {
options.encoding = encoding
options.debug = true
}
compileJava.options.debugOptions.debugLevel = "source,lines,vars"
tasks.withType(JavaCompile) {
options.encoding = encoding
options.debug = true
}
compileJava.options.debugOptions.debugLevel = "source,lines,vars"

sourceCompatibility = '1.8'
sourceCompatibility = '1.8'
}
74 changes: 37 additions & 37 deletions gradle/dependencies.gradle
@@ -1,12 +1,21 @@
repositories {
jcenter()
allprojects {
repositories {
jcenter()
}
}

ext {
testngVersion = '7.3.0'
seleniumVersion = '3.141.59'
junitVersion = '5.7.0'
jettyVersion = '9.4.34.v20201102'
nettyVersion = '4.1.54.Final'
guavaVersion = '30.0-jre'
assertjVersion = '3.18.1'
mockitoVersion = '3.6.28'
browserupProxyVersion = '2.1.1'
littleProxyVersion = '2.0.1'
videoRecorderVersion = '2.0'
commonsFileuploadVersion = '1.4'
}

dependencies {
Expand All @@ -25,45 +34,36 @@ dependencies {
exclude group: 'org.apache.httpcomponents.core5', module: 'httpcore5-h2'
}

implementation('com.google.guava:guava:30.0-jre')

compileOnly('com.browserup:browserup-proxy-core:2.1.1')
testCompile('com.browserup:browserup-proxy-core:2.1.1')
compileOnly('io.netty:netty-all:4.1.54.Final')
testCompile('io.netty:netty-all:4.1.54.Final')
compileOnly('xyz.rogfam:littleproxy:2.0.1')
compileOnly("com.browserup:browserup-proxy-core:$browserupProxyVersion")
compileOnly("xyz.rogfam:littleproxy:$littleProxyVersion")

compileOnly("org.junit.jupiter:junit-jupiter-api:$junitVersion")
compileOnly("junit:junit:4.13.1")
compileOnly("org.testng:testng:$testngVersion") { transitive = false }

testImplementation("org.seleniumhq.selenium:selenium-server:$seleniumVersion") {
exclude group: 'net.bytebuddy', module: 'byte-buddy'
}
testImplementation("org.eclipse.jetty:jetty-servlet:${jettyVersion}")
testImplementation("org.testng:testng:$testngVersion") { transitive = false }
testImplementation('org.mockito:mockito-core:3.6.28')
testImplementation('commons-fileupload:commons-fileupload:1.4')
testImplementation('com.automation-remarks:video-recorder-junit5:2.0') {
exclude group: 'org.awaitility'
}
// don't update. see https://github.com/assertj/assertj-core/issues/1985#issuecomment-696340308
testImplementation("org.assertj:assertj-core:3.17.1")

implementation('org.slf4j:slf4j-api:1.7.30')
testImplementation("org.junit.jupiter:junit-jupiter-engine:$junitVersion")
testImplementation("org.junit.jupiter:junit-jupiter-params:$junitVersion")
testRuntimeOnly('org.slf4j:slf4j-simple:1.7.30')
}

task libsProd(type: Sync) {
from configurations.compileClasspath
into "$buildDir/lib-prod"
allprojects {
dependencies {
implementation("com.google.guava:guava:${guavaVersion}")
testImplementation("com.browserup:browserup-proxy-core:$browserupProxyVersion")
testImplementation("xyz.rogfam:littleproxy:$littleProxyVersion")
testImplementation("io.netty:netty-all:$nettyVersion")
testImplementation("io.netty:netty-codec:$nettyVersion")
testImplementation("org.eclipse.jetty:jetty-servlet:${jettyVersion}")
testImplementation("commons-fileupload:commons-fileupload:${commonsFileuploadVersion}")
testImplementation("org.mockito:mockito-core:$mockitoVersion")
testImplementation("org.assertj:assertj-core:$assertjVersion")
testImplementation("com.automation-remarks:video-recorder-junit5:$videoRecorderVersion") {
exclude group: 'org.awaitility'
}
implementation('org.slf4j:slf4j-api:1.7.30')
testRuntimeOnly('org.slf4j:slf4j-simple:1.7.30')
}
}

task libsTest(type: Sync) {
from configurations.testRuntimeClasspath - configurations.compileClasspath
into "$buildDir/lib-test"
subprojects {
dependencies {
implementation project(':')
testImplementation project(':')
testImplementation project(':').sourceSets.test.output
}
}

compileJava.dependsOn libsProd, libsTest
10 changes: 4 additions & 6 deletions gradle/deploy.gradle
Expand Up @@ -3,22 +3,20 @@ jar {
attributes(
"Automatic-Module-Name": project.group + '.' + project.name,
"Implementation-Title": project.group + '.' + project.name,
"Implementation-Version": version,
"Implementation-Version": archiveVersion,
"Implementation-Vendor": "Codeborne")
}
from sourceSets.main.output
from sourceSets.staticFacade.output
from allprojects.sourceSets.main.output
}

task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
from sourceSets.staticFacade.allSource
from allprojects.sourceSets.main.allSource
}

javadoc {
failOnError = false
source = sourceSets.main.allJava + sourceSets.staticFacade.allJava
source = allprojects.sourceSets.main.allJava
}

task javadocJar(type: Jar, dependsOn: javadoc) {
Expand Down
35 changes: 0 additions & 35 deletions gradle/source-sets.gradle

This file was deleted.

164 changes: 70 additions & 94 deletions gradle/tests.gradle
@@ -1,107 +1,83 @@
test {
include 'com/codeborne/selenide/**/*'
}

task ie(type: Test) {
systemProperties['selenide.browser'] = 'ie'
systemProperties['selenide.timeout'] = '8000'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/ie'
include 'integration/**/*'
exclude '**/AlertText.*'
exclude '**/ConfirmTest.*'
exclude 'com/codeborne/selenide/**/*'
}

task edge(type: Test) {
systemProperties['selenide.browser'] = 'edge'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/edge'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}

task chrome(type: Test) {
systemProperties['selenide.browser'] = 'chrome'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/chrome'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}

task chrome_headless(type: Test) {
systemProperties['selenide.browser'] = 'chrome'
systemProperties['selenide.headless'] = 'true'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/chrome_headless'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}

task chrome_remote(type: Test) {
systemProperties['selenide.remote'] = 'http://localhost:4444/wd/hub'
systemProperties['selenide.browser'] = 'chrome'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/chrome_remote'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}
allprojects {
test {
include 'com/codeborne/selenide/**/*'
}

task firefox(type: Test) {
systemProperties['selenide.browser'] = 'firefox'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/firefox'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}
task ie(type: Test) {
systemProperties['selenide.browser'] = 'ie'
systemProperties['selenide.timeout'] = '8000'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/ie'
include 'integration/**/*'
exclude '**/AlertText.*'
exclude '**/ConfirmTest.*'
exclude 'com/codeborne/selenide/**/*'
}

task firefox_headless(type: Test) {
systemProperties['selenide.browser'] = 'firefox'
systemProperties['selenide.headless'] = 'true'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/firefox_headless'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}
task edge(type: Test) {
systemProperties['selenide.browser'] = 'edge'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/edge'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}

task firefox_remote(type: Test) {
systemProperties['selenide.remote'] = 'http://localhost:4444/wd/hub'
systemProperties['selenide.browser'] = 'firefox'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/firefox_remote'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}
task chrome(type: Test) {
systemProperties['selenide.browser'] = 'chrome'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/chrome'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}

task grid(type: Test) {
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/grid'
include 'grid/**/*'
exclude 'com/codeborne/selenide/**/*'
}
task chrome_headless(type: Test) {
systemProperties['selenide.browser'] = 'chrome'
systemProperties['selenide.headless'] = 'true'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/chrome_headless'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}

task testng(type: Test) {
useTestNG()
include '**/testng/**/*'
systemProperties['selenide.browser'] = 'chrome'
systemProperties['selenide.headless'] = 'true'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/testng'
}
task chrome_remote(type: Test) {
systemProperties['selenide.remote'] = 'http://localhost:4444/wd/hub'
systemProperties['selenide.browser'] = 'chrome'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/chrome_remote'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}

tasks.withType(Test) {
useJUnitPlatform()
systemProperty('file.encoding', encoding)
systemProperty('BUILD_URL', System.getenv()['BUILD_URL'])
if (System.getenv('CI')) {
maxParallelForks = 1
} else {
maxParallelForks = (int) Runtime.runtime.availableProcessors().intdiv(2) ?: 1
task firefox(type: Test) {
systemProperties['selenide.browser'] = 'firefox'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/firefox'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}
jvmArgs = ['-ea', '-Xmx512m']
systemProperties += System.properties

classpath += project.sourceSets.staticFacade.output.classesDirs
classpath += project.sourceSets.staticFacadeTest.output.classesDirs
testClassesDirs += project.sourceSets.staticFacadeTest.output.classesDirs
task firefox_headless(type: Test) {
systemProperties['selenide.browser'] = 'firefox'
systemProperties['selenide.headless'] = 'true'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/firefox_headless'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}

jacoco {
enabled = true
includes = ['com/codeborne/selenide/**/*']
task firefox_remote(type: Test) {
systemProperties['selenide.remote'] = 'http://localhost:4444/wd/hub'
systemProperties['selenide.browser'] = 'firefox'
systemProperties['selenide.reportsFolder'] = 'build/reports/tests/firefox_remote'
include 'integration/**/*'
exclude 'com/codeborne/selenide/**/*'
}
outputs.upToDateWhen {
false

tasks.withType(Test) {
useJUnitPlatform()
systemProperty('file.encoding', encoding)
systemProperty('BUILD_URL', System.getenv()['BUILD_URL'])
if (System.getenv('CI')) {
maxParallelForks = 1
} else {
maxParallelForks = (int) Runtime.runtime.availableProcessors().intdiv(2) ?: 1
}
jvmArgs = ['-ea', '-Xmx512m']
systemProperties += System.properties
}
}

task allTests(dependsOn: ['clean', 'check', 'test', 'grid', 'firefox_headless', 'chrome_headless']) {}
task allTests(dependsOn: ['clean', 'check', 'firefox_headless', 'chrome_headless']) {}

0 comments on commit 24f01d8

Please sign in to comment.