Skip to content

Commit 3782b37

Browse files
committed
Merge branch 'developer'
2 parents ee038b4 + 2376223 commit 3782b37

File tree

1,270 files changed

+49462
-35844
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,270 files changed

+49462
-35844
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ backend/logs
1313
cli/src/main/javascript/node_modules
1414
frontend/src/main/javascript/node_modules
1515
frontend/src/main/javascript/dist
16-
frontend/src/main/javascript/tests/coverage
16+
frontend/src/main/javascript/test/coverage
1717
frontend/src/main/javascript/assets/fonts
1818

1919
# Auto Generated Swagger Doc
@@ -22,3 +22,5 @@ main/src/main/webapp/restdocs
2222
main/uploads
2323

2424
frontend/src/main/javascript/npm-debug\.log
25+
26+
backend/debug.log

.travis.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
language: java
2+
3+
dist: trusty
4+
sudo: false
5+
6+
jdk:
7+
- oraclejdk8
8+
- openjdk8
9+
10+
addons:
11+
apt:
12+
sources:
13+
- sourceline: "deb https://deb.nodesource.com/node_10.x trusty main"
14+
key_url: "https://deb.nodesource.com/gpgkey/nodesource.gpg.key"
15+
packages:
16+
- nodejs
17+
18+
cache:
19+
directories:
20+
- $HOME/.m2
21+
- frontend/src/main/javascript/node_modules
22+
23+
before_cache:
24+
# do not cache our local archives
25+
- rm -rf $HOME/.m2/repository/de/learnlib/alex/
26+
27+
install: true # skip mvn install, because we essentially run the same command in the script routine
28+
29+
script:
30+
- mvn clean package
31+
32+
branches:
33+
only:
34+
- master
35+
- developer

CHANGELOG.md

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,55 @@
1+
# ALEX 1.5.0
2+
3+
## Breaking Changes
4+
5+
* Symbols and tests that have been exported with v.1.4.0 and lower can not be imported directly.
6+
Apply the new export format and for each symbol in an exported JSON file add the properties `inputs` and `outputs` so that the resulting file looks like:
7+
8+
```JSON
9+
{
10+
"version": "1.4.0",
11+
"type": "symbols",
12+
"symbols": [
13+
{
14+
"name": "symbol",
15+
...,
16+
"inputs": [],
17+
"outputs": []
18+
},
19+
...
20+
]
21+
}
22+
```
23+
24+
## Bug Fixes
25+
26+
* Resuming a learning process should now work as expected.
27+
* Various smaller fixes.
28+
29+
## Features
30+
31+
* The results of test executions are saved in reports.
32+
* Added webhooks to notify external applications about changes.
33+
* Reuse the browser instance for membership queries.
34+
A hard reset with a new browser instance can be achieved with a new action.
35+
* New actions:
36+
* Refresh and restart the browser window.
37+
* Click on a arbitrary element with a given visible text.
38+
* Check if an element, e.g. a checkbox, radio button or option is selected.
39+
* Set variable to HTTP response body.
40+
* Parameterized symbols: symbols now have dynamic inputs and outputs.
41+
Values for inputs can be set by a user for modelling tests.
42+
* Symbols and symbol groups can be nested in a tree like structure.
43+
* Named project URLs.
44+
* Download uploaded files.
45+
* Learner results can be cloned.
46+
* Import and export symbol groups.
47+
48+
## Further Comments
49+
50+
* The CLI for ALEX is now a standalone NPM package and can be installed via `npm install alex-cli`
51+
52+
153
# ALEX 1.4.0
254

355
## Breaking Changes
@@ -101,4 +153,4 @@ See the [user documentation](http://learnlib.github.io/alex/book/1.4.0/) for mor
101153
## Other
102154
103155
* Updated frontend and backend dependencies
104-
* Removed requirement to have grunt and grunt-cli installed globally
156+
* Removed requirement to have grunt and grunt-cli installed globally

LICENSE.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
176176

177177
END OF TERMS AND CONDITIONS
178178

179-
Copyright 2016 TU Dortmund
179+
Copyright 2018 TU Dortmund
180180

181181
Licensed under the Apache License, Version 2.0 (the "License");
182182
you may not use this file except in compliance with the License.
@@ -188,4 +188,4 @@ Unless required by applicable law or agreed to in writing, software
188188
distributed under the License is distributed on an "AS IS" BASIS,
189189
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
190190
See the License for the specific language governing permissions and
191-
limitations under the License.
191+
limitations under the License.

README.md

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,62 +4,61 @@
44

55
# ALEX
66

7-
Automata Learning Experience (ALEX) is an extension of the [LearnLib](https://github.com/LearnLib/learnlib) that allows
8-
you run automated tests on web applications and JSON-based REST APIs using active automata learning.
7+
[![Travis CI](https://travis-ci.org/LearnLib/alex.svg?branch=developer)](https://travis-ci.org/LearnLib/alex)
98

10-
Users model basic test inputs for their target application which are used by ALEX to automatically infer an automaton
11-
model, or to be more precise, a [Mealy machine](https://en.wikipedia.org/wiki/Mealy_machine) that represents the
12-
behavior of the web application.
9+
Automata Learning EXperience (ALEX) is an extension of [LearnLib][learnlib] that allows you run automated tests on web
10+
applications and JSON-based REST APIs using active automata learning.
1311

14-
## Installation and login
12+
Users model [Selenium][selenium]- or HTTP-based test inputs for their application, which are used to automatically infer
13+
an automaton model (a [Mealy machine][mealy]), which represents the behavior of the web application.
1514

16-
We developed and tested ALEX using either Windows 8.1 and higher and Linux Ubuntu 14.10 and higher.
17-
As the application runs on JAVA, any other system with an installed JVM should do fine.
18-
We also advise to use a modern web browser like Google Chrome, Mozilla Firefox or Microsoft Edge with JavaScript enabled.
15+
## Installation
1916

20-
After the first start, you can login as an admin using the account below.
21-
22-
Email: *admin@alex.example* <br>
23-
Password: *admin*
17+
Make sure you have Java 8 installed on your system.
18+
We advise to use a modern web browser like Google Chrome, Mozilla Firefox or Microsoft Edge with JavaScript enabled.
2419

25-
#### Using the packaged version
20+
1. [Download](https://github.com/LearnLib/alex/releases/latest) the latest version.
21+
2. Open a terminal and start ALEX via `java -jar alex-1.5.0.war [--alex.port=XXXX]`.
22+
3. Wait until the command line prints something like `de.learnlib.alex.App - Started App in XX.XXX seconds`.
23+
3. Open *http://localhost:8000* in a web browser.
2624

27-
Make sure you have Java 8 installed on your system.
25+
After the first start, you can login as an admin using the account below:
2826

29-
1. Download the latest version. [Download](https://github.com/LearnLib/alex/releases/latest)
30-
2. Open a terminal and start the *war* archive using `java -jar ALEX.war [--port=XXXX]`
31-
3. Open *http://localhost:8000* in a web browser
27+
Email: *admin@alex.example* <br>
28+
Password: *admin*
3229

33-
#### From source
30+
## Build instructions
3431

35-
For the installation from the source files make sure your system matches the following requirements:
32+
In order to build ALEX from source make sure your system matches the following requirements:
3633

3734
* Java JDK 8
3835
* Maven 3
39-
* Node.js v7.9.* and the NPM
40-
41-
To obtain ALEX execute the following commands in a directory of your choice:
42-
43-
1. `git clone https://github.com/LearnLib/alex.git`
44-
2. `cd alex`
36+
* Node.js (v10.0.0) and the NPM (v6.0.0)
4537

46-
Afterwards you can build and run ALEX by running following commands:
38+
To build ALEX, open a terminal and follow the instructions below:
4739

48-
1. `mvn clean package [-DskipTests]`
49-
2. `java -jar build/target/ALEX/*war [--alex.port=XXXX]`
50-
3. open *http://localhost:8000* in a web browser
40+
```bash
41+
# clone the repository
42+
git clone https://github.com/LearnLib/alex.git
5143

52-
Or, if you just want to start the backend, you can use:
44+
# navigate to the project directory
45+
cd alex
5346

54-
1. `cd main`
55-
2. `mvn spring-boot:run [-Dalex.port=XXXX]`
56-
3. open *http://localhost:8000* in a web browser
47+
# build ALEX
48+
mvn install package [-DskipTests]
49+
```
5750

51+
The bundle can then be found at `build/target/alex-build-1.5.0.war`.
5852

5953
## Further reading
6054

61-
* [User manual](http://learnlib.github.io/alex/book/1.4.0/contents/user-manual/index.html)
62-
* [Examples](http://learnlib.github.io/alex/book/1.4.0/contents/examples/index.html)
63-
* [Developer docs](http://learnlib.github.io/alex/book/1.4.0/contents/developer-documents/index.html)
55+
* [User manual](http://learnlib.github.io/alex/book/1.5.0/contents/user-manual/index.html)
56+
* [Examples](http://learnlib.github.io/alex/book/1.5.0/contents/examples/index.html)
57+
* [Developer docs](http://learnlib.github.io/alex/book/1.5.0/contents/developer-documents/index.html)
6458
* [Active automata learning](https://scholar.google.de/scholar?hl=de&q=active+automata+learning)
6559
* [LearnLib](http://learnlib.de/)
60+
61+
62+
[learnlib]: https://github.com/LearnLib/learnlib
63+
[mealy]: https://en.wikipedia.org/wiki/Mealy_machine
64+
[selenium]: https://www.seleniumhq.org/

backend/pom.xml

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!--
3-
~ Copyright 2017 TU Dortmund
3+
~ Copyright 2018 TU Dortmund
44
~
55
~ Licensed under the Apache License, Version 2.0 (the "License");
66
~ you may not use this file except in compliance with the License.
@@ -23,7 +23,7 @@
2323
<parent>
2424
<groupId>de.learnlib.alex</groupId>
2525
<artifactId>alex-parent</artifactId>
26-
<version>1.4.0</version>
26+
<version>1.5.0</version>
2727
<relativePath>../pom.xml</relativePath>
2828
</parent>
2929

@@ -44,17 +44,17 @@
4444
<spring.version>4.3.12.RELEASE</spring.version>
4545
<log4j.version>2.6.2</log4j.version>
4646
<jersey.version>2.25.1</jersey.version>
47-
<learnlib.version>0.12.1-SNAPSHOT</learnlib.version>
48-
<automatalib.version>0.6.1-SNAPSHOT</automatalib.version>
49-
<selenium.version>3.7.1</selenium.version>
47+
<learnlib.version>0.13.1</learnlib.version>
48+
<automatalib.version>0.7.1</automatalib.version>
49+
<selenium.version>3.11.0</selenium.version>
5050
<htmlunitdriver.version>2.28.2</htmlunitdriver.version>
5151
<jose4j.version>0.6.2</jose4j.version>
5252
<shiro.version>1.4.0</shiro.version>
5353
<xml-apis.version>1.4.01</xml-apis.version>
5454
<jsoup.version>1.11.2</jsoup.version>
5555
<json-path.version>2.4.0</json-path.version>
5656
<hsqldb.version>2.4.0</hsqldb.version>
57-
<jackson-datatype.version>2.9.2</jackson-datatype.version>
57+
<jackson-datatype.version>2.9.4</jackson-datatype.version>
5858
<junit.version>4.12</junit.version>
5959
<mockito.version>2.12.0</mockito.version>
6060
<powermock.version>1.7.3</powermock.version>
@@ -255,11 +255,6 @@
255255
<artifactId>htmlunit-driver</artifactId>
256256
<version>${htmlunitdriver.version}</version>
257257
</dependency>
258-
<dependency>
259-
<groupId>org.seleniumhq.selenium</groupId>
260-
<artifactId>selenium-support</artifactId>
261-
<version>${selenium.version}</version>
262-
</dependency>
263258
<dependency>
264259
<groupId>org.seleniumhq.selenium</groupId>
265260
<artifactId>selenium-chrome-driver</artifactId>

backend/src/main/java/de/learnlib/alex/ALEXApplication.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016 TU Dortmund
2+
* Copyright 2018 TU Dortmund
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -23,22 +23,26 @@
2323
import de.learnlib.alex.auth.security.AuthenticationFilter;
2424
import de.learnlib.alex.common.exceptions.NotFoundExceptionMapper;
2525
import de.learnlib.alex.config.dao.SettingsDAO;
26+
import de.learnlib.alex.config.entities.DriverSettings;
2627
import de.learnlib.alex.config.entities.Settings;
2728
import de.learnlib.alex.config.rest.SettingsResource;
2829
import de.learnlib.alex.data.rest.CounterResource;
2930
import de.learnlib.alex.data.rest.FileResource;
3031
import de.learnlib.alex.data.rest.ProjectResource;
3132
import de.learnlib.alex.data.rest.SymbolGroupResource;
33+
import de.learnlib.alex.data.rest.SymbolParameterResource;
3234
import de.learnlib.alex.data.rest.SymbolResource;
3335
import de.learnlib.alex.learning.rest.LearnerResource;
3436
import de.learnlib.alex.learning.rest.LearnerResultResource;
35-
import de.learnlib.alex.testsuites.rest.TestResource;
37+
import de.learnlib.alex.testing.rest.TestExecutionConfigResource;
38+
import de.learnlib.alex.testing.rest.TestReportResource;
39+
import de.learnlib.alex.testing.rest.TestResource;
40+
import de.learnlib.alex.webhooks.rest.WebhookResource;
3641
import org.glassfish.jersey.media.multipart.MultiPartFeature;
3742
import org.glassfish.jersey.server.ResourceConfig;
3843
import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature;
3944
import org.springframework.boot.web.servlet.FilterRegistrationBean;
4045
import org.springframework.context.annotation.Bean;
41-
import org.springframework.context.annotation.Conditional;
4246
import org.springframework.core.env.Environment;
4347
import org.springframework.stereotype.Component;
4448
import org.springframework.web.cors.CorsConfiguration;
@@ -96,10 +100,14 @@ public ALEXApplication() {
96100
register(LearnerResultResource.class);
97101
register(ProjectResource.class);
98102
register(SettingsResource.class);
99-
register(SymbolGroupResource.class);
100103
register(SymbolResource.class);
104+
register(SymbolGroupResource.class);
105+
register(SymbolParameterResource.class);
101106
register(UserResource.class);
102107
register(TestResource.class);
108+
register(TestReportResource.class);
109+
register(WebhookResource.class);
110+
register(TestExecutionConfigResource.class);
103111

104112
// Exceptions
105113
register(NotFoundExceptionMapper.class);
@@ -142,7 +150,7 @@ public void initSettings() {
142150
String edgeDriverPath = System.getProperty("webdriver.edge.driver", "");
143151
String remoteDriverURL = System.getProperty("webdriver.remote.url", "");
144152

145-
final Settings.DriverSettings driverSettings = new Settings.DriverSettings(chromeDriverPath,
153+
final DriverSettings driverSettings = new DriverSettings(chromeDriverPath,
146154
geckoDriverPath,
147155
edgeDriverPath,
148156
remoteDriverURL);

backend/src/main/java/de/learnlib/alex/App.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016 TU Dortmund
2+
* Copyright 2018 TU Dortmund
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.

backend/src/main/java/de/learnlib/alex/JacksonConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016 TU Dortmund
2+
* Copyright 2018 TU Dortmund
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.

backend/src/main/java/de/learnlib/alex/auth/dao/UserDAO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016 TU Dortmund
2+
* Copyright 2018 TU Dortmund
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.

0 commit comments

Comments
 (0)