1
- # RobotLab
1
+ # RobotLab [ ![ Build Status ] [ build-badge ]] [ build-status ]
2
2
3
- [ ![ Build Status] ( https://dev.azure.com/robots-from-jupyter/robots-from-jupyter/_apis/build/status/robots-from-jupyter.robotlab?branchName=master )] ( https://dev.azure.com/robots-from-jupyter/robots-from-jupyter/_build/latest?definitionId=3?branchName=master )
3
+ > A one-click installer for [ Robot Framework] [ robotframework ] ,
4
+ [ JupyterLab] [ jupyterlab ] , [ Firefox] [ ] , and Friends
4
5
5
- > Building the _ Robots from Jupyter_ Workshop Installer
6
+ ## Get RobotLab
7
+ Start the download now for your platform:
6
8
9
+ ### [ Linux] [ ] | [ MacOSX] [ ] | [ Windows] [ ]
7
10
8
- ## Build It
9
- Get [ Miniconda] [ ] . Install [ anaconda-project] [ ] .
11
+ > ... or view the [ release notes] [ release-notes ] .
10
12
11
- On OSX/Linux, run:
12
- ``` bash
13
- anaconda-project run build
14
- anaconda-project run test
15
- ```
13
+ [ Linux ] : https://github.com/robots-from-jupyter/robotlab/releases/download/v2019.9.0/RobotLab-2019.9.0-Linux-x86_64.sh
14
+ [ MacOSX ] : https://github.com/robots-from-jupyter/robotlab/releases/download/v2019.9.0/RobotLab-2019.9.0-MacOSX-x86_64.sh
15
+ [ Windows ] : https://github.com/robots-from-jupyter/robotlab/releases/download/v2019.9.0/RobotLab-2019.9.0-Windows-x86_64.exe
16
+ [ release-notes ] : https://github.com/robots-from-jupyter/robotlab/releases/tag/v2019.9.0
17
+
18
+ ## Install RobotLab
19
+ > You'll want at least 2GB available to install and run RobotLab
20
+
21
+ - On Windows, double-click the installer
22
+ - We recommend:
23
+ - _ don't_ add RobotLab to your ` PATH `
24
+ - _ don't_ register RobotLab's python
25
+ - On Linux/MacOSX
26
+ - ` bash RobotLab-*.sh `
27
+ - follow the prompts
28
+ - _ don't_ install into your shell
29
+
30
+ > ** Remember** where you install RobotLab!
31
+ >
32
+ > We recommend someplace
33
+ - ** short** , e.g. ` C:\robotlab ` or ` /home/myuser/robotlab `
34
+ - with ** no spaces** in the path, e.g. ~~ ` c:\Robot Lab ` ~~
35
+ - ** not shared** on something like Dropbox, or a network drive
36
+
37
+
38
+ ## Run RobotLab
39
+ During installation, RobotLab will try to create a desktop icon:
40
+ <img width =" 32 " src =" ./robotlab/src/robotlab/icons/lab.svg " style =" float " />
41
+
42
+ ### _ There is an icon on my desktop/menu_
43
+ Click it to launch the RobotLab server in a console window. It will also attempt
44
+ to launch the bundled Firefox. The application log will keep running in the
45
+ background, and sometimes useful information will appear there.
16
46
17
- On Windows, run:
47
+ ### _ Nope, no icon here_
48
+ If you don't see an icon, launch a console, e.g. ` bash ` on Linux/MacOSX or
49
+ ` cmd.exe ` on Windows.
50
+
51
+ | | Linux/MacOSX | Windows
52
+ | --| -|
53
+ | start a prompt | open your terminal or console application | open ` cmd.exe ` from the start menu |
54
+ | activate the robotlab environment | type ` source /path/to/robolab/bin/activate ` <br /> press <kbd >ENTER</kbd > | type ` c:\path\to\robotlab\Scripts\activate ` <br /> press <kbd >ENTER</kbd >
55
+ | start robotlab | type ` robotlab ` <br /> press <kbd >ENTER</kbd > | type ` robotlab ` <br /> press <kbd >ENTER</kbd >
56
+
57
+ ## _ Still didn't work_
58
+ If you're still stuck, open [ an issue] [ robotlab-issues ] . There should be some
59
+ template information to provide.
60
+
61
+ ## Advanced RobotLab Commands and Invocations
18
62
``` bash
19
- anaconda-project run build:win
20
- anaconda-project run test:win
63
+ # assuming you've already `activate`d
64
+ robotlab [.] # basically just jupyterlab
65
+ robotlab-tutorial [.] # copy the robotkernel tutorial to this directory
66
+ robotlab-examples [.] # " " " examples " " "
67
+ robotlab-shortcuts
21
68
```
22
69
23
- ## Motivation
70
+ ## Uninstall RobotLab
71
+ - Delete the installation directory.
72
+ - Delete any desktop shortcuts.
73
+ - That is all.
24
74
75
+ ## Motivation
25
76
While [ Robot Framework] [ robotframework ] has no dependencies beyond the Python
26
77
standard library, using it for non-trivial testing or process automation usually
27
- requires a fair amount of additional Python dependencies, and even some more
28
- exotic ones.
29
-
30
- The focus of this workshop, running Robot tests and tasks interactively with
31
- [ robotkernel] [ ] , requires the Jupyter stack, and to demonstrate some of its more
32
- advanced features, some fairly extensive extra libraries from both the Robot
33
- Framework and the scientific Python ecosystems.
34
-
35
- To make a three-hour workshop reasonable, this repo uses [ conda] [ ] and
36
- [ constructor] [ ] to build single-file installers for multiple platforms, reducing
37
- the per-participant install time to a minimum, and make sneaker-net distribution
38
- possible in the event that network problems arise.
78
+ requires a fair number of additional Python dependencies, and even some more
79
+ exotic ones. We wanted to run a workshop for [ RoboCon] [ ] 2019 and show interactive
80
+ editing/running with [ robotkernel] [ ] .
81
+
82
+ The focus of this workshop, running Robot tests and tasks interactively, required
83
+ the Jupyter stack. To demonstrate some of its more advanced features, some fairly
84
+ extensive extra libraries from both the Robot Framework and the scientific Python
85
+ ecosystems were needed, and getting these to install smoothly on every attendee's
86
+ computers can prove to be... interesting.
87
+
88
+ To make a three-hour workshop reasonable, we needed a distribution approach that
89
+ was:
90
+ - easy to start, to that we could get to the Good Stuff
91
+ - cross-platform, so that everyone could follow along
92
+ - self-contained, so that it could be easily removed
93
+ - offline-capable, so that we could handle intermittent network access
94
+ - hackable by the user, so that we could fix Surprise Features
95
+
96
+ > ### _ Field Notes_
97
+ >
98
+ > _ At our 2019 workshop, graciously hosted by [ Siili] [ ] , (whose network was super fast!)
99
+ > our room full of attendees, on three distributions of Linux, two versions of MacOSX
100
+ > and two versions of Windows were all up and running in under 30 minutes. We got
101
+ > through all of the [ tutorial] [ ] before lunch!_
102
+
103
+ ## Tools
104
+ RobotLab is built with:
105
+ - [ conda] [ ] , an OS-agnostic package manager
106
+ - [ anaconda-project] [ ] , a multi-environment manager and command executor
107
+ - [ conda-build] [ ] , the conda package builder
108
+ - [ constructor] [ conda-constructor ] , the installer-builder of conda packages
109
+ - [ azure pipelines] [ azure-pipelines ] , a continuous integration provider
39
110
40
111
41
112
## conda packaging
42
113
Once it has matured, ` robotkernel ` will be available from [ conda-forge] [ ] , the
43
- community-driven upstream of the Anaconda Distribution.
114
+ community-driven upstream of the Anaconda Distribution, which is also built
115
+ with [ constructor] [ conda-constructor ] .
44
116
45
- So for these installers, and supporting exmaples , we build a number of
46
- dependencies.
117
+ So for the RobotLab installers, and supporting examples and tutorials , we need to
118
+ build a number of dependencies.
47
119
48
120
### robotlab
49
- JupyterLab's build chain has some negative externalities
121
+ [ JupyterLab] [ ] 's build chain has some negative externalities
50
122
for end users, namely an install- or run-time dependency on NodeJS and npmjs.org
51
123
when using any labextensions other than the built-in set (e.g. Notebook, Terminal,
52
124
Console, Editor, etc.). Because, for the purposes of the workshop, we want to
@@ -57,30 +129,31 @@ debugging `nodejs` and `webpack`, we've added a few choice JupyterLab extensions
57
129
- ` @jupyterlab/toc ` : a table of contents pane for Markdown headers
58
130
- ` @jupyter-widgets/jupyterlab-manager ` : because widgets are always good
59
131
60
- ...and wrapped them into a conda package which exposes some command, which can
61
- do most of the things ` jupyter lab ` can do.
132
+ All of these are built outside of the ` conda-build ` cycle.
133
+
134
+ This asset, and all our dependencies, are wrapped into a conda package which
135
+ exposes some useful commands, which can do most of the things ` jupyter lab ` can do,
136
+ as well as create desktop shortcuts, and unpack the tutorial content.
62
137
63
138
` robotlab ` works like ` jupyter lab ` , while ` robotlab-extension ` works like
64
139
` jupyter labextension ` . This isn't a toy installation: with the bundled ` nodejs ` ,
65
140
an intrepid user can still install any of the [ labextensions] [ ] that are
66
141
compatible with the version ` robotlab ` was built with: as of writing, ` 1.1.x ` .
67
142
68
- ## [ constructor] [ ]
69
- All of the dependencies are captured in [ construct.yaml.in] [ ] . In addition to
70
- everything mentioned above, you'll also find:
71
-
72
- In addition to required dependencies a number of extra libraries are included to
143
+ ## [ constructor] [ conda-constructor ]
144
+ All of the dependencies are captured in [ construct.yaml.in] [ ] .
145
+ In addition to required dependencies, a number of extra libraries are included to
73
146
showcase some of the features of using Robot Framework interactively.
74
147
- ` JupyterLibrary ` for testing Jupyter clients with robotframework
75
- - ` SeleniumLibrary ` for controlling browsers
76
- - ` geckodriver ` for interacting with Mozilla Firefox 57+
148
+ - ` SeleniumLibrary ` for controlling browsers
149
+ - ` geckodriver ` for interacting with...
150
+ - ` firefox ` , the open source web browser
77
151
- ` opencv ` for image-driven testing
78
- - ` robotframework-lint ` for helping you write clean robot syntax
79
152
- ` RESTInstance ` for testing REST APIs, including swagger
80
153
81
154
## On Browsers and WebDrivers
82
155
RobotLab includes Mozilla Firefox and ` geckodriver ` , with versions that will be
83
- supported for _ years_ , not _ months _ , by a team that is committed to open source
156
+ supported for _ years_ , not _ weeks _ , by a team that is committed to open source
84
157
and web standards.
85
158
86
159
### webdriver for Microsoft Internet Explorer
@@ -92,14 +165,51 @@ It's pretty easy to [get `webdriver`][webdriver] for Microsoft Edge, but...
92
165
It's also pretty easy to get [ chromedriver] [ ] for Google Chrome, but...
93
166
- it has to match the version of Chrome exactly
94
167
168
+ # Work On RobotLab
169
+ Contributions are welcome! See the [ issues] [ ] for outstanding work we've been
170
+ discussing.
171
+
172
+ > - Get [ Miniconda] [ ]
173
+ > - Install [ anaconda-project] [ ]
174
+ > - Clone [ this repo] [ robotlab ]
175
+
176
+ From the command line e.g. ` bash ` or ` cmd.exe ` or the ` Anaconda Prompt ` , run:
177
+ ``` bash
178
+ anaconda-project run build:lab
179
+ anaconda-project run build
180
+ ```
181
+
182
+ ## Test Robotlab
183
+ ``` bash
184
+ anaconda-project run test
185
+ ```
186
+
187
+ ## Checking RobotLab
188
+
189
+ ``` bash
190
+ anaconda-project run lint
191
+ anaconda-project run integrity
192
+ ```
193
+
95
194
[ anaconda-project ] : https://github.com/anaconda-platform/anaconda-project
195
+ [ azure-pipelines ] : https://azure.microsoft.com/en-us/services/devops/pipelines/
196
+ [ build-badge ] : https://dev.azure.com/robots-from-jupyter/robots-from-jupyter/_apis/build/status/robots-from-jupyter.robotlab?branchName=master
197
+ [ build-status ] : https://dev.azure.com/robots-from-jupyter/robots-from-jupyter/_build/latest?definitionId=3?branchName=master
198
+ [ chromedriver ] : https://chromedriver.chromium.org/downloads
199
+ [ conda-build ] : https://github.com/conda/conda-build
200
+ [ conda-constructor ] : https://github.com/conda/constructor
96
201
[ conda-forge ] : https://github.com/conda-forge
97
- [ robotframework ] : https://github.com/robotframework/robotframework
98
202
[ conda ] : https://github.com/conda/conda
99
- [ constructor ] : https://github.com/conda/constructor
100
203
[ construct.yaml.in ] : ./constructor/construct.yaml.in
204
+ [ Firefox ] : https://www.mozilla.org/en-US/firefox/
205
+ [ jupyterlab ] : https://jupyterlab.readthedocs.io
101
206
[ labextensions ] : https://www.npmjs.com/search?q=keywords:jupyterlab-extension
102
207
[ Miniconda ] : https://conda.io/miniconda.html
208
+ [ RoboCon ] : https://robocon.io
209
+ [ robotframework ] : https://github.com/robotframework/robotframework
103
210
[ robotkernel ] : https://github.com/robots-from-jupyter/robotkernel
211
+ [ robotlab ] : https://github.com/robots-from-jupyter/robotlab
212
+ [ robotlab-issues ] : https://github.com/robots-from-jupyter/robotlab/issues
213
+ [ Siili ] : https://siili.com
214
+ [ tutorial ] : https://github.com/robots-from-jupyter/robotkernel/tree/master/docs/notebooks
104
215
[ webdriver ] : https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/#downloads
105
- [ chromedriver ] : https://chromedriver.chromium.org/downloads
0 commit comments