The Saros Test Framework (STF) was originally written for Saros/E with its SWT user interface. With the advent of both Saros/I and the new HTML GUI, this framework is not longer sufficient to ensure Saros' quality. The new STF should be able to handle both Saros versions (Eclipse and IntelliJ) and their common HTML GUI.
This page breaks down the things that need to be done in order to achieve that goal.
Tasks
Preparatory work
Create an overview
Depends on: no dependencies
Description: Parts of the existing STF implementation can be reused, others need to be rewritten, and others need to be written from scratch. Analog to Saros itself, the STF needs to be split into several parts, e.g. STF/Common, STF/SWT, STF/Swing, and STF/HTML. Starting from the current STF state, it would be helpful for the further steps to have overview of which part should end up where:
- There are some parts that -- even with the new HTML GUI in place -- will remain specific for Eclipse, such as interacting with the editor content, menu items, and other Eclipse views like the project explorer. This part will be called STF/SWT. Its content already exists in the current STF.
- Analog to this first category, there will be Swing-specific logic dealing with the same elements (editors, menus, ...) only in IntelliJ. None of this logic already exists yet. This part will be called STF/Swing.
- Finally, the common HTML GUI of Saros needs to be interacted with. This part will be called STF/HTML.
Currently involved: Robert Kasparson
Status: not started
Evaluate Swing element access in IntelliJ IDEA
Depends on: no dependencies
Description: There might be multiple ways to access Swing elements (both read and write access) that are displayed in IntelliJ. This task deals with finding a suitable one, that can later be embedded in the STF.
Currently involved: N.N.
Status: not started
Evaluate HTML element access in Eclipse
Depends on: no dependencies
Description: There might be multiple ways to access HTML elements (both read and write access) that are displayed in an Eclipse view. This task deals with finding a suitable one, that can later be embedded in the STF.
There might be a large overlap with the next task, and a common technology would be very favourable.
Currently involved: N.N.
Status: not started
Evaluate HTML element access in IntelliJ IDEA
Depends on: no dependencies
Description: There might be multiple ways to access HTML elements (both read and write access) that are displayed in an IntelliJ view. This task deals with finding a suitable one, that can later be embedded in the STF.
There might be a large overlap with the previous task, and a common technology would be very favourable.
Currently involved: N.N.
Status: not started
Design
STF project structure
Depends on: Create an overview
Description: Currently, all of the STF (along with the STF test cases) reside inside the Saros/E project. The four STF parts postulated above (STF/Commong, STF/SWT, STF/Swing, STF/HTML) could all be part of a separate project. So could the STF test cases. We need a structure for this that avoids confusion. After a structure has been devised, it needs to be enforced on the existing STF code at that point.
Currently involved: Robert Kasparson
Status: not started
STF test suite organization
Depends on: Create an overview
Description: All current STF tests run on Saros/E with the old SWT GUI only. In the process of completing the HTML GUI we will get a few more types of possible setups a test case could run in, e.g. Saros/E with the new HTML GUI and Saros/I (with the new HTML GUI). Some test cases might be indifferent to the setup they run in, others might be IDE or configuration specific. Some test case might be for E-E settings only, others for E-I settings. There needs to be a way of how the configuration "which test case should be executed in which environment" is handled. This could be inside the test cases themselves (similar to the "selectUsers()" method) or completely externalized (config file, ...).
Currently involved: Robert Kasparson
Status: not started
STF API
Depends on: Create an overview
Description: Ideally, the utility methods offered by the STF should be the same regardless of the Saros instance that is controlled by them. Some of the current classes and methods might be too low-level and rely too much on the IDE being "Eclipse-ish".
Currently involved: N.N.
Status: not started
Implementation
Adapt STF/SWT to target API
Depends on: STF API
Description: !!!
Currently involved: N.N.
Status: not started
Implement STF/Swing
Depends on: STF API, Evaluate Swing element access in IntelliJ
Description: !!!
Currently involved: N.N.
Status: not started
Implement SWT/HTML
Depends on: STF API, Evaluate HTML element access in Eclipse, Evaluate HTML element access in Intellij, (HTML GUI implementation)
Description: !!!
Currently involved: N.N.
Status: not started
Integrate STF
Depends on: Adapt STF/SWT to target API, Implement STF/Swing, Implement STF/HTML
Description: Integrate the different parts.
Currently involved: N.N.
Status: not started
Infrastructure
Setup CI for Saros/E HTML tests
Depends on: Test suite organization
Description: Currently, Saros/E's nightly build is copied to the target machines and Saros/E is started using the SWT GUI. For running nightly STF tests on the HTML GUI as well, this needs to be amended. Eventually, the test cases should be executed on all platforms they are meant for.
Currently involved: N.N.
Status: not started
Setup CI for Saros/I tests
Depends on: Test suite organization
Description: Currently, only Eclipse instances running Saros' nightly build are started and controlled remotely. For running nightly STF tests on Saros/I as well, this needs to be amended. Eventually, the test cases should be executed on all platforms they are meant for.
Currently involved: N.N.
Status: not started
Setup CI for Cross-IDE tests
Depends on: Setup CI for Saros/E HTML tests, Setup CI for Saros/I tests
Description: Depending on the test case requirements, some test sessions need to be started using an Eclipse client on the one end, and an IntelliJ client on the other. Eventually, the test cases should be executed on all platforms they are meant for.
Currently involved: N.N.
Status: not started
Enhancements
Setup CI for multiple IDE versions
Depends on: Setup CI for Cross-IDE tests
Description: !!!
Currently involved: N.N.
Status: not started
Incorporate network manipulation features of "saros-gw"
Depends on: Setup CI for Cross-IDE tests
Description: !!!
Currently involved: N.N.
Status: not started
Separate setup/teardown utilities from actual test logic
Depends on: Integrate STF
Description: Currently, the preparation and the clean-up steps before and after each STF test case execution are performed using the same mechanism as the test case itself. This has two consequences: First, if, for example, having set a configuration flag is necessary for a test case, this test case might fail if the checkbox corresponding to this configuration is altered altough this was not part of what the test actually meant to test. Second, the test execution is slow. An improved STF would offer two ways to access Saros: One direct way, which changes the configuration flag directly (which would be used in setup and teardown methods) and one way through the GUI (which would be used only the test case which deals with said flag).
Currently involved: N.N.
Status: not started