My Posts
Frameworks, libraries and tools
Chapter 2: A dashboard to control them all

Chapter 2: A dashboard to control them all

One of the issues I've encountered in my existent job as an SDET is the miriad of different projects using diferent tools, which hampers the possibility to homogeneously interact with them across the organization..This (inconsistency) calls for an additional layer of technology to enable teams to easily trigger, trace, and report test executions., trace them and report back in a seamless way.

Let me tell you how we solved this issue in my team. Our first step was to pinpoint all the tools in the development lifecycle:

Code repositoriesCI pipelinesTest reporters
GithubGithub actionsXray
CircleCITestrail
Allure server

Modelling

This application contains 2 simple models: Project Model and Execution Model.

Project Model

This is a model where model where you can add, update or remove a project like this:

Object

project = {
	testReporter: [ xray, testrail, allure],
	repositories: [
		{
			testplatform: UI | API | VISUAL | MOBILE,
			ciPlatform: github | circleci 
			gitUrl: "",
			environments: [ LIVE, PRELIVE, TEST, DEV ],
			xrayProject: "",
			testrailProject: "",
			allureProject: ""
		}
	]
}

User flow

  1. User selects a project.
    1. Dropdowns with platform types are shown ( UI, API, VISUAL, MOBILE )
  2. User selects a platform to test
    1. Dropdowns with environments are shown, where a multiple selection can trigger multiple executions.
  3. Depending on the enabled test repository:
    1. User can see existing test executions. If none are selected, a new test execution is created.
    2. user can see a list of available suites and add them to the test repository.
      1. If a selected test execution contains suites, you can still add new or remove existing ones (unless you want to re-execute them). This doesn't affect the execution history, because all suites remain in the test repository execution.

Execution Model

The Trigger button creates an execution model, that stores all data for the execution.

Object

execution = {
	id: "",
	author: "",
	project: "",
	testplatform: UI | API | VISUAL | MOBILE,
	environment: LIVE | PRELIVE | TEST | DEV,
	startDate: Date,
	endDate: Date,
	finished: true | false,
	pipelineUrl: "",
	allureUrl: "",
	testrailUrl: "",
	xrayUrl: ""
}

User flow

  1. User triggers an execution.
    1. System sends to the CI tool the variables to execute the pipeline and returns the pipeline url so the user can follow up the process.
  2. When the test execution is finished the worker will send back the results with urls on reporters.
    1. This will result in a table with all past executions and related information.