Skip to content

Commit 3a6937a

Browse files
committed
added versioning to syllabus and added Release 1.0.1 to the versioned docs
Signed-off-by: René <snooz@posteo.de>
1 parent c4cfd7c commit 3a6937a

48 files changed

Lines changed: 5331 additions & 2 deletions

Some content is hidden

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

.github/workflows/pr-preview-surge.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
run: npm ci
6565

6666
- name: Build
67-
run: npm run build
67+
run: npm run build:preview
6868

6969
- name: Upload build artifact
7070
uses: actions/upload-artifact@v4

.github/workflows/release-pages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131

3232
- name: Build website
3333
working-directory: ./website
34-
run: npm run build
34+
run: npm run build:production
3535

3636
- name: Deploy to gh-pages
3737
uses: peaceiris/actions-gh-pages@v3

website/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,20 @@ $ npm run build
3030

3131
This command generates static content into the `build` directory and can be served using any static contents hosting service.
3232

33+
Build modes:
34+
35+
```
36+
$ npm run build:preview
37+
```
38+
39+
Builds docs with both released versions and `next` content.
40+
41+
```
42+
$ npm run build:production
43+
```
44+
45+
Builds docs with released versions only (hides `next`).
46+
3347
### Deployment
3448

3549
Using SSH:

website/docusaurus.config.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@ import remarkDirective from "remark-directive";
77
import remarkTermDirective from "./src/remark/remark-term-directive.js";
88
import codeMaxLineLength from './src/remark/remark-code-max-line-length.js';
99

10+
const rawDocsBuildMode = process.env.DOCS_BUILD_MODE ?? 'preview';
11+
12+
if (!['preview', 'production'].includes(rawDocsBuildMode)) {
13+
throw new Error(
14+
`Invalid DOCS_BUILD_MODE: "${rawDocsBuildMode}". Expected "preview" or "production".`,
15+
);
16+
}
17+
18+
const includeCurrentVersion = rawDocsBuildMode === 'preview';
19+
1020

1121
/** @type {import('@docusaurus/types').Config} */
1222
const config = {
@@ -34,6 +44,7 @@ const config = {
3444
/** @type {import('@docusaurus/preset-classic').Options} */
3545
({
3646
docs: {
47+
includeCurrentVersion,
3748
admonitions: {
3849
keywords: ['lo', 'K1', 'K2', 'K3', 'note', 'tip', 'info', 'warning', 'danger'],
3950
extendDefaults: true,
@@ -107,6 +118,12 @@ const config = {
107118
to: '/docs/learning_objectives',
108119
position: 'left',
109120
},
121+
{
122+
type: 'docsVersionDropdown',
123+
position: 'right',
124+
docsPluginId: 'default',
125+
dropdownActiveClassDisabled: true,
126+
},
110127
],
111128
},
112129
footer: {

website/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
"start": "docusaurus start",
99
"start-public": "docusaurus start --host 0.0.0.0",
1010
"build": "docusaurus build",
11+
"build:preview": "DOCS_BUILD_MODE=preview npm run build",
12+
"build:production": "DOCS_BUILD_MODE=production npm run build",
1113
"swizzle": "docusaurus swizzle",
1214
"deploy": "docusaurus deploy",
1315
"clear": "docusaurus clear",

website/src/remark/remark-code-max-line-length.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ export default function codeMaxLineLength(options = {}) {
88
const max = options.max ?? 100;
99

1010
return (tree, file) => {
11+
const sourcePath = file.path ?? file.history?.[0] ?? '';
12+
13+
// Versioned docs are snapshots and should not fail on current lint rules.
14+
if (/(^|[\\/])versioned_docs([\\/]|$)/.test(sourcePath)) {
15+
return;
16+
}
17+
1118
visit(tree, 'code', (node) => {
1219
// Optional: allow opt-out with "nolint" in code block meta:
1320
// ```js nolint
120 KB
Loading
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# 1 Introduction to Robot Framework
2+
3+
The upcoming chapters provide a concise overview of Robot Framework, including its core structure, use cases in test automation and Robotic Process Automation (RPA), and key specification styles like keyword-driven and behavior-driven testing. You'll learn about its architecture, syntax, and how test cases and tasks are organized. Additionally, the chapters explain the open-source licensing under Apache 2.0, the role of the Robot Framework Foundation in maintaining the ecosystem, and the foundational web resources available for further exploration and contributions.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# 1.1 Purpose / Use Cases
2+
3+
::::lo[Learning Objectives]
4+
5+
:::K1[LO-1.1]
6+
7+
Recall the two main use cases of Robot Framework
8+
9+
:::
10+
11+
::::
12+
13+
Robot Framework is a versatile, open-source automation framework that supports both **test automation** and **robotic process automation (RPA)**.
14+
Initially designed for acceptance testing, it has since evolved to cover other types of testing and various automation tasks in both IT and business environments.
15+
Its keyword-driven approach allows users to create reusable components, making it accessible even to those with minimal programming skills.
16+
Robot Framework can be extended through a vast array of third-party or custom made keyword libraries, allowing it to automate interactions with APIs, user interfaces, databases, and many more technologies.
17+
18+
19+
20+
## 1.1.1 Test Automation
21+
22+
::::lo[Learning Objectives]
23+
24+
:::K1[LO-1.1.1]
25+
26+
Recall the test levels Robot Framework is mostly used for
27+
28+
:::
29+
30+
::::
31+
32+
Robot Framework is widely used at various levels of testing, primarily focusing on:
33+
34+
- **System Testing**: Involves verifying the complete system’s behavior and capabilities. It often includes both functional and non-functional aspects (e.g., accessibility, security) and may use simulated components.
35+
36+
- **System Integration Testing**: Focuses on the interaction between the system under test and external services, as well as on the integration of multiple systems into a larger system, ensuring that all integrated components communicate and function together as expected.
37+
38+
- **Acceptance Testing**: Aims to validate that the system meets business requirements and is ready for deployment or release. This often includes different forms of acceptance testing (e.g., user acceptance, operational acceptance, regulatory acceptance) and is frequently written or conducted by end-users or stakeholders to confirm the system’s readiness for use. Acceptance tests, often defined by business stakeholders in approaches like Acceptance Test-Driven Development (ATDD), can be automated and executed earlier in the development process. This ensures that the solution aligns with business requirements from the start and provides immediate feedback, reducing costly changes later.
39+
40+
- **End-to-End Testing**: Verifies that a complete workflow or process within the system operates as intended, covering all interconnected subsystems, interfaces, and external components. End-to-end tests ensure the correct functioning of the application in real-world scenarios by simulating user interactions from start to finish.
41+
42+
Robot Framework's flexibility and support for external libraries make it an excellent tool for automating these comprehensive test cases, ensuring seamless interaction between components and validating the system's behavior also in production or production-like conditions.
43+
44+
Robot Framework is typically not used for **component testing** nor **integration testing** because its primary strength lies in higher-level testing, such as system, acceptance, and end-to-end testing, where behavior-driven and keyword-based approaches excel. Component testing requires low-level, granular tests focusing on individual units of code, often necessitating direct interaction with the codebase, mocking, or stubbing, which are better handled by unit testing frameworks like JUnit, pytest, or NUnit. Similarly, integration testing at a low level often requires precise control over service interactions, such as API stubs or protocol-level testing, which may not align with Robot Framework's abstraction-oriented design. While Robot Framework can technically handle these cases through custom libraries, its overhead and design philosophy make it less efficient compared to tools specifically tailored for low-level and tightly scoped testing tasks.
45+
46+
47+
### 1.1.1.1 Synthetic Monitoring
48+
49+
Beyond traditional test levels, **Synthetic Monitoring**, also referred to as **Active Monitoring** or **Proactive Monitoring**, is a proactive approach that simulates user interactions with live systems at regular intervals. It detects performance issues or downtime early with the goal of detecting such failure before they affect actual users.
50+
51+
52+
53+
## 1.1.2 Robotic Process Automation (RPA)
54+
55+
Robotic Process Automation (RPA) uses software bots to perform tasks and interactions normally performed by humans, without requiring changes to the underlying applications.
56+
57+
Robot Framework, with its keyword-driven approach, vast ecosystem of libraries, simplicity, and scalability, is widely adopted for RPA tasks.
58+
Robot Framework allows users to automate most workflows using ready-made keyword libraries that provide a wide range of functionalities. These libraries can be combined and reused in user-defined keywords, making automation simple and efficient. For custom functionalities or more complex tasks, Robot Framework also offers the flexibility to create custom keyword libraries using Python, enabling advanced use cases and seamless integration with unique systems.
59+
60+
Common use cases of RPA with Robot Framework include:
61+
62+
- **Data extraction and manipulation**: Automating data transfers and processing between systems.
63+
- **Task / Process automation**: Automating tasks such as form submissions, clicks, and file operations across web or desktop applications.
64+
65+
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# 1.2 Architecture of Robot Framework
2+
3+
Robot Framework is an open-source automation framework that allows you to build automation scripts for testing and RPA (Robotic Process Automation).
4+
It focuses on providing a keyword-driven or behavior-driven approach, making the automation easy to understand and maintain.
5+
However, it is not a full-stack solution that encompasses all layers of automation.
6+
Instead, it provides a flexible platform where different tools, libraries, and integrations handle specific tasks to implement a flexible automation solution.
7+
8+
9+
10+
## 1.2.1 Robot Framework and the gTAA (Generic Test Automation Architecture)
11+
12+
::::lo[Learning Objectives]
13+
14+
:::K1[LO-1.2.1]
15+
16+
Recall the layers of the Generic Test Automation Architecture (gTAA) and their corresponding components in Robot Framework
17+
18+
:::
19+
20+
::::
21+
22+
The **Generic Test Automation Architecture (gTAA)** described in the ISTQB "Certified Tester Advanced Level Test Automation Engineering" offers a structured approach to test automation, dividing it into different layers for a clear separation of concerns:
23+
24+
- **Definition Layer**: This layer contains the "Test Data" (test cases, tasks, resource files which include user keywords and variables).
25+
In Robot Framework, the test data is written using the defined syntax and contains keyword calls and argument values that make the test case or task definitions structured in suites.
26+
27+
- **Execution Layer**: In Robot Framework, the execution layer consists of the framework itself, including its core components and APIs.
28+
It parses and interprets the test data syntax to build an execution model.
29+
The execution layer is responsible for processing this execution model to execute the library keywords with their argument values, logging results, and generating reports.
30+
31+
- **Adaptation Layer**: This layer provides the connection between Robot Framework and the system under test (SUT).
32+
In Robot Framework, this is where the keyword libraries, which contain code responsible for interacting with different technologies and interfaces,
33+
such as those for UI, API, database interactions, or others, are located.
34+
These keyword libraries enable interaction with different technologies and interfaces, ensuring the automation is flexible and adaptable to various environments.
35+
36+
Editors/IDEs that offer support for Robot Framework's syntax are tools that support or integrate in these layers.
37+
When writing tests|tasks or keywords, the editor supports the definition layer.
38+
When executing or debugging tests|tasks, the editor supports the execution layer.
39+
When writing keywords in e.g. Python for keyword libraries, the editor supports the adaptation layer.
40+
Therefore also other additional extensions of Robot Framework can be categorized into these layers.
41+
42+
{/* TODO: add a graphic here */}
43+
44+
## 1.2.2 What is Robot Framework & What It Is Not
45+
46+
::::lo[Learning Objectives]
47+
48+
:::K1[LO-1.2.2]
49+
50+
Recall what is part of Robot Framework and what is not
51+
52+
:::
53+
54+
::::
55+
56+
57+
Robot Framework itself focuses primarily on **test|task execution**.
58+
It includes:
59+
60+
- A parser to read test|task data and build an execution model.
61+
- An execution engine to process model and execute the keywords.
62+
- A result generation mechanism to provide logs and reports.
63+
- A collection of generic standard libraries to process and handle data or interact with files and processes.
64+
- Defined APIs for extensions and customizations.
65+
66+
However, Robot Framework **does not** include:
67+
68+
- Keyword libraries to control systems under test/RPA.
69+
70+
Such as:
71+
- Web front-end automation libraries.
72+
- API interaction libraries.
73+
- Mobile automation libraries.
74+
- Database interaction libraries.
75+
- RPA libraries.
76+
- etc.
77+
78+
- Code editors or IDEs.
79+
- CI/CD Integration.
80+
81+
Robot Framework defines the syntax for test|task data, but it is the role of external libraries and tools to extend its functionality for specific automation needs.
82+
83+
84+
85+
## 1.2.3 Technology & Prerequisites
86+
87+
::::lo[Learning Objectives]
88+
89+
:::K1[LO-1.2.3]
90+
91+
Recall the technology Robot Framework is built on and the prerequisites for running it
92+
93+
:::
94+
95+
::::
96+
97+
98+
Robot Framework is built on **Python** but is adaptable to other languages and technologies through external libraries.
99+
To run Robot Framework, an [officially supported version](https://devguide.python.org/versions/) of the **Python interpreter** is required on the machine executing the tests|tasks.
100+
Typically, Robot Framework and its libraries are installed via the "package installer for Python" (`pip`) from [PyPi.org](https://pypi.org/project/robotframework/), allowing for straightforward installation and setup.
101+
Robot Framework itself does not have any external dependencies, but additional third party tools or keyword libraries may require additional installations.
102+
103+
104+

0 commit comments

Comments
 (0)