Skip to content

Commit 371f85f

Browse files
committed
add basic structure of the library
add general interfaces update license file
1 parent 04f6377 commit 371f85f

22 files changed

+815
-1
lines changed

.gitignore

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Created by .ignore support plugin (hsz.mobi)
2+
### Java template
3+
# Compiled class file
4+
*.class
5+
6+
# Log file
7+
*.log
8+
9+
# BlueJ files
10+
*.ctxt
11+
12+
# Mobile Tools for Java (J2ME)
13+
.mtj.tmp/
14+
15+
# Package Files #
16+
*.jar
17+
*.war
18+
*.nar
19+
*.ear
20+
*.zip
21+
*.tar.gz
22+
*.rar
23+
24+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
25+
hs_err_pid*
26+
### Maven template
27+
target/
28+
pom.xml.tag
29+
pom.xml.releaseBackup
30+
pom.xml.versionsBackup
31+
pom.xml.next
32+
release.properties
33+
dependency-reduced-pom.xml
34+
buildNumber.properties
35+
.mvn/timing.properties
36+
37+
# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored)
38+
!/.mvn/wrapper/maven-wrapper.jar
39+
.gitignore
40+
.idea/

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@
186186
same "printed page" as the copyright notice for easier
187187
identification within third-party archives.
188188

189-
Copyright [yyyy] [name of copyright owner]
189+
Copyright 2019 Aquality Automation
190190

191191
Licensed under the Apache License, Version 2.0 (the "License");
192192
you may not use this file except in compliance with the License.

pom.xml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.github.aquality-automation</groupId>
8+
<artifactId>aquality-appium</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
<build>
11+
<plugins>
12+
<plugin>
13+
<groupId>org.apache.maven.plugins</groupId>
14+
<artifactId>maven-compiler-plugin</artifactId>
15+
<configuration>
16+
<source>8</source>
17+
<target>8</target>
18+
</configuration>
19+
</plugin>
20+
</plugins>
21+
</build>
22+
<dependencies>
23+
<dependency>
24+
<groupId>com.fasterxml.jackson.core</groupId>
25+
<artifactId>jackson-databind</artifactId>
26+
<version>2.9.9</version>
27+
</dependency>
28+
<dependency>
29+
<groupId>log4j</groupId>
30+
<artifactId>log4j</artifactId>
31+
<version>1.2.17</version>
32+
</dependency>
33+
<dependency>
34+
<groupId>io.appium</groupId>
35+
<artifactId>java-client</artifactId>
36+
<version>4.1.2</version>
37+
</dependency>
38+
</dependencies>
39+
40+
41+
</project>
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package aquality.appium.application;
2+
3+
import aquality.appium.configuration.IConfiguration;
4+
import aquality.appium.configuration.ITimeoutConfiguration;
5+
import aquality.appium.logger.Logger;
6+
import io.appium.java_client.AppiumDriver;
7+
8+
public class Application {
9+
10+
private final Logger logger = Logger.getInstance();
11+
private final IConfiguration configuration;
12+
private final ITimeoutConfiguration timeouts;
13+
private Long timeoutImpl;
14+
private final AppiumDriver appiumDriver;
15+
16+
public Application(AppiumDriver appiumDriver, IConfiguration configuration) {
17+
this.appiumDriver = appiumDriver;
18+
this.configuration = configuration;
19+
this.timeouts = configuration.getTimeoutConfiguration();
20+
this.timeoutImpl = timeouts.getImplicit();
21+
/*
22+
todo: determine if all of these timeouts are necessary to be set this way
23+
getDriver().manage().timeouts().implicitlyWait(timeoutImpl, TimeUnit.SECONDS);
24+
setPageLoadTimeout(timeouts.getPageLoad());
25+
setScriptTimeout(timeouts.getScript());
26+
*/
27+
}
28+
29+
/**
30+
* Provides AppiumDriver instance for current application session
31+
* @return web driver instance
32+
*/
33+
public AppiumDriver getDriver() {
34+
return appiumDriver;
35+
}
36+
37+
/**
38+
* Returns platform of current application
39+
* @return name
40+
*/
41+
public final ApplicationPlatform geApplicationPlatform() {
42+
return configuration.getApplicationProfile().getApplicationName();
43+
}
44+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package aquality.appium.application;
2+
3+
import aquality.appium.configuration.IConfiguration;
4+
5+
public class ApplicationManager {
6+
private static final ThreadLocal<Application> applicationContainer = new ThreadLocal<>();
7+
private static final ThreadLocal<IApplicationFactory> factoryContainer = new ThreadLocal<>();
8+
9+
private ApplicationManager() {
10+
}
11+
12+
13+
public static Application getApplication(){
14+
if(applicationContainer.get() == null || applicationContainer.get().getDriver().getSessionId() == null) {
15+
setDefaultApplication();
16+
}
17+
return applicationContainer.get();
18+
}
19+
20+
public static void setDefaultFactory(){
21+
/*
22+
todo: to be implemented
23+
IConfiguration configuration = Configuration.getInstance();
24+
IApplicationFactory applicationFactory = Configuration.getInstance().getApplicationProfile().isRemote()
25+
? new RemoteApplicationFactory(configuration) : new LocalApplicationFactory(configuration);
26+
27+
setFactory(applicationFactory);*/
28+
}
29+
30+
public static void setFactory(IApplicationFactory applicationFactory){
31+
remove(factoryContainer);
32+
ApplicationManager.factoryContainer.set(applicationFactory);
33+
}
34+
35+
private static void setDefaultApplication(){
36+
if(factoryContainer.get() == null){
37+
setDefaultFactory();
38+
}
39+
setApplication(factoryContainer.get().getApplication());
40+
}
41+
42+
public static void setApplication(Application application){
43+
remove(applicationContainer);
44+
ApplicationManager.applicationContainer.set(application);
45+
}
46+
47+
private static void remove(ThreadLocal<?> container){
48+
if(container.get() != null){
49+
container.remove();
50+
}
51+
}
52+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package aquality.appium.application;
2+
3+
public enum ApplicationPlatform {
4+
ANDROID,
5+
IOS
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package aquality.appium.application;
2+
3+
public interface IApplicationFactory {
4+
5+
Application getApplication();
6+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package aquality.appium.configuration;
2+
3+
import aquality.appium.application.ApplicationPlatform;
4+
import aquality.appium.configuration.driversettings.IDriverSettings;
5+
6+
import java.net.URL;
7+
8+
public interface IApplicationProfile {
9+
10+
ApplicationPlatform getApplicationName();
11+
12+
boolean isRemote();
13+
14+
boolean isElementHighlightEnabled();
15+
16+
IDriverSettings getDriverSettings();
17+
18+
URL getRemoteConnectionUrl();
19+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package aquality.appium.configuration;
2+
3+
public interface IConfiguration {
4+
5+
IApplicationProfile getApplicationProfile();
6+
7+
ITimeoutConfiguration getTimeoutConfiguration();
8+
9+
IRetryConfiguration getRetryConfiguration();
10+
11+
ILoggerConfiguration getLoggerConfiguration();
12+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package aquality.appium.configuration;
2+
3+
public interface ILoggerConfiguration {
4+
5+
//todo: SupportedLanguage getLanguage();
6+
}

0 commit comments

Comments
 (0)