You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AutoCheck.md
+3-3
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ layout: default
6
6
{:toc}
7
7
8
8
# Automatic checks #
9
-
[AutoCheck](https://addons.mozilla.org/en-US/firefox/addon/selite-auto-check/versions/) ([Components](Components) > [Auto Check](Components#autocheck)) validates the current page after every successful Selenese [command]. (That is not necessarily on every page reload - e.g. it may skip pages that redirect.) You can use some standard checks (with optional configuration) or create custom ones.
9
+
[Auto Check](https://addons.mozilla.org/en-US/firefox/addon/selite-auto-check/versions/) ([Components](Components) > [Auto Check](Components#autocheck)) validates the current page after every successful Selenese [command]. (That is not necessarily on every page reload - e.g. it may skip pages that redirect.) You can use some standard checks (with optional configuration) or create custom ones.
10
10
11
11
## Negative checks ##
12
12
Negative checks validate that given selector(s) don't match any elements on the page. That's useful if your web server, framework or programming language report errors/warnings/notices in some kind of fixed format.
@@ -22,12 +22,12 @@ Standard PHP detection class supports this (which works with [Xdebug](http://xde
22
22
Positive checks validate that the page contains elements that match given selector(s). However, it can't validate that HTML of a page conforms to HTML standard. That's because Firefox automatically fixes incorrect HTML and it adds missing necessary elements.
23
23
24
24
## Configuration ##
25
-
Configure these checks at {{chromeUrl}} _chrome://selite-settings/content/tree.xul?module=extensions.selite-settings.common_. In order to use [AutoCheck](AutoCheck) you must select at least `autoCheckDetector` or `autoCheckDetectorCustom`. Other fields are optional.
25
+
Configure these checks at {{chromeUrl}} _chrome://selite-settings/content/tree.xul?module=extensions.selite-settings.common_. In order to use Auto Check you must select at least `autoCheckDetector` or `autoCheckDetectorCustom`. Other fields are optional.
26
26
27
27
*`autoCheckAssert` - whether an occurrence should trigger an assert failure; by default it triggers a validation failure rather than an assert failure
28
28
*`autoCheckDetector` - choose a standard detection class to use; or set it to `null` or `undefined` if you use a custom class
29
29
*`autoCheckDetectorCustom` - enter a name of the custom detection class (which you must load into [Core scope] e.g. via [Bootstrap](Bootstrap)); used only if `autoCheckDetector` is `null` or `undefined`
30
-
*`autoCheckIgnored` - the format of entries depends on the detection class. [AutoCheck](AutoCheck) reports failures unless they match an `autoCheckIgnored` entry. Use `autoCheckIgnored` to match already reported bugs (so that they don't get reported again).
30
+
*`autoCheckIgnored` - the format of entries depends on the detection class. Auto Check reports failures unless they match an `autoCheckIgnored` entry. Use `autoCheckIgnored` to match already reported bugs (so that they don't get reported again).
31
31
* for PHP enter XPath logical conditions (not whole XPath expressions). Those would match either PHP warning/notice/error message (description) or a leaf file path (where the failure occurred). The conditions can refer to that text node by '.' (and they must not refer to parent/sibling nodes). Examples are
Copy file name to clipboardExpand all lines: Bootstrap.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -49,8 +49,8 @@ If you introduce or modify any Selenese [commands][command] - i.e. <code>Seleniu
49
49
If you remove a filename from `bootstrapCoreExtensions` (or you switch to a different default [set] or a [suite] with a different [set] associated with it), Bootstrap can't 'unload' a file that it has loaded already. If you change that option later and you add the filename back, it won't re-run the file, unless its timestamp has changed.
50
50
51
51
## Dependencies between files ##
52
-
Bootstrap initiates extensions after any [Core extensions][core extension] loaded as Firefox add-ons (whether they use [ExtensionSequencer](ExtensionSequencer) or not).
52
+
Bootstrap initiates extensions after any [Core extensions][core extension] loaded as Firefox add-ons (whether they use [Extension Sequencer] or not).
53
53
54
-
If you have multiple files registered with Bootstrap through a {{valuesManifest}}, they get loaded in that order. However, if you register multiple files through profile-based configuration (as per [SettingsInterface](SettingsInterface)), their order is not guaranteed. Then you need more structure for that: package them as Firefox extensions and load them through [ExtensionSequencer](ExtensionSequencer).
54
+
If you have multiple files registered with Bootstrap through a {{valuesManifest}}, they get loaded in that order. However, if you register multiple files through profile-based configuration (as per [SettingsInterface](SettingsInterface)), their order is not guaranteed. Then you need more structure for that: package them as Firefox extensions and load them through [Extension Sequencer].
55
55
56
56
On change, Bootstrap re-loads all registered files, not just the one(s) updated. That allows dependant files (that were registered with Bootstrap through a {{valuesManifest}}) to inject any hooks in the expected order.
Copy file name to clipboardExpand all lines: ClassicSelenese.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -106,7 +106,7 @@ Find a basic example at Selenium Documentation > [Test Design Considerations](ht
106
106
# Variables
107
107
108
108
## Stored variables
109
-
Some Selenese [commands][command] store variables, to be used by later steps. [SelBlocksGlobal](SelBlocksGlobal) manages scope of such variables. When inside a [SelBlocksGlobal](SelBlocksGlobal) function, you can only use stored variables set in that function (or passed as parameters to it). The local scope also means: if you set a stored variable within a Selenese function and the same stored variable exists in the caller scope (that invoked the current function), the variable in the caller scope won't be affected.
109
+
Some Selenese [commands][command] store variables, to be used by later steps. [SelBlocks Global] manages scope of such variables. When inside a [SelBlocks Global] function, you can only use stored variables set in that function (or passed as parameters to it). The local scope also means: if you set a stored variable within a Selenese function and the same stored variable exists in the caller scope (that invoked the current function), the variable in the caller scope won't be affected.
110
110
111
111
Parameters of Selenese commands can access stored variables as `${name-of-the-variable}`. Those get replaced by the value of the variable. However, if a command processes the parameter as a Javascript expression (e.g. `storeEval, getEval` or when using [EnhancedSelenese](EnhancedSelenese)), and if the variable contains an array/object or a non-numeric string (possibly with an apostrophe or quotation mark), then replacement of `${name-of-the-variable}` won't work robustly. For those cases use `$name-of-the-variable` (or `storedVars.name-of-the-variable` or `storedVars['name-of-the-variable']`). See also [EnhancedSelenese](EnhancedSelenese).
Copy file name to clipboardExpand all lines: Components.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ layout: default
9
9
# Dependancies
10
10
Install [Selenium IDE](https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/). Unless you're choosing specific components, also get [Favorites (Selenium IDE)](https://addons.mozilla.org/en-US/firefox/addon/favorites-selenium-ide/).
11
11
12
-
Don't install SeLite together with SelBlocks, Flow Control, GoTo, Sideflow or Implicit Wait. (Those extensions are incompatible with [SelBlocksGlobal](SelBlocksGlobal)).
12
+
Don't install SeLite together with SelBlocks, Flow Control, GoTo, Sideflow or Implicit Wait. (Those extensions are incompatible with [SelBlocks Global]).
13
13
14
14
# Overall package
15
15
For the easiest download, get an [overall package](https://addons.mozilla.org/en-US/firefox/addon/selite).
Copy file name to clipboardExpand all lines: ComponentsDependants.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -35,7 +35,7 @@ If you disable some components, do it at {{chromeUrl}} _about:addons_. Don't dis
35
35
Notes
36
36
37
37
* Clipboard And Indent can work without [Settings](Settings). Then the default indentation step is 4 spaces.
38
-
*[ExitConfirmationChecker](ExitConfirmationChecker) can be used either with or without [ExtraCommands](ExtraCommands). If used together, then it applies to Selenese defined in [ExtraCommands](ExtraCommands).
39
-
* Miscellaneous, [Settings](Settings) and SQLite Connnection Manager can be used without Selenium IDE (as Javascript code modules). Then they don't require [ExtensionSequencer](ExtensionSequencer). However, if you want to use them within Selenium IDE, you need [ExtensionSequencer](ExtensionSequencer), too.
38
+
*[Exit Confirmation Checker] can be used either with or without [ExtraCommands](ExtraCommands). If used together, then it applies to Selenese defined in [ExtraCommands](ExtraCommands).
39
+
* Miscellaneous, [Settings](Settings) and SQLite Connnection Manager can be used without Selenium IDE (as Javascript code modules). Then they don't require [Extension Sequencer]. However, if you want to use them within Selenium IDE, you need [Extension Sequencer], too.
40
40
* Run All Favorites also requires [Favorites (Selenium IDE)](https://addons.mozilla.org/en-US/firefox/addon/favorites-selenium-ide/).
41
41
*[Settings](Settings) can be used without DB Objects, but then you can't reload [script][script db]/vanilla[vanilla db]/[app DB] through GUI (as per {{navReloadingDatabases}}).
Copy file name to clipboardExpand all lines: CustomisingSelenese.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ Do not search for implementation functions of Selenese action [commands][command
11
11
For locating the source code of those Javascript functions see [JavascriptSpecial](JavascriptSpecial) > [Locating a Javascript function in sources](JavascriptSpecial#locating-a-javascript-function-in-sources).
12
12
13
13
# Defining functions in Selenium Core #
14
-
This is for files normally loaded into [Core scope] (via [Bootstrap](Bootstrap) or [ExtensionSequencer](ExtensionSequencer), which use [JavascriptComplex](JavascriptComplex) > [mozIJSSubScriptLoader](JavascriptComplex#mozIJSSubScriptLoader)). (That's not for {{navJavascriptCodeModules}}.)
14
+
This is for files normally loaded into [Core scope] (via [Bootstrap](Bootstrap) or [Extension Sequencer], which use [JavascriptComplex](JavascriptComplex) > [mozIJSSubScriptLoader](JavascriptComplex#mozIJSSubScriptLoader)). (That's not for {{navJavascriptCodeModules}}.)
15
15
16
16
You can define functions for [Core scope] in either way mentioned at [JavascriptEssential](JavascriptEssential) > [Defining Javascript functions](JavascriptEssential#defining-javascript-functions). However, if you use [the classic way](JavascriptEssential#the-classic-way), do that only in `strict` mode. Otherwise the function will be in the Selenium global scope (i.e. outside of [Core scope]) - then you need to see {{navCoreExtensionsLoadedTwice}}.
Copy file name to clipboardExpand all lines: DevelopmentTools.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -94,10 +94,10 @@ If the source file hasn't been loaded yet and you want to set the breakpoint bef
94
94
95
95
Then (re)start Firefox, open Browser Toolbox/Debugger and only after that open Selenium IDE. The debugger will pause on that line.
96
96
97
-
You can also start Firefox with debugger from shell, i.e. `firefox -jsdebugger`. However, it seems that you can't use keyword `debugger` to investigate the very first loading stage of extensions (e.g. when [ExtensionSequencer](ExtensionSequencer) loads an extension's `SeLiteExtensionSequencerManifest.js`). The debugger doesn't stop there. Instead, see above how to print messages with `console`.
97
+
You can also start Firefox with debugger from shell, i.e. `firefox -jsdebugger`. However, it seems that you can't use keyword `debugger` to investigate the very first loading stage of extensions (e.g. when [Extension Sequencer] loads an extension's `SeLiteExtensionSequencerManifest.js`). The debugger doesn't stop there. Instead, see above how to print messages with `console`.
98
98
99
99
#### Breakpoints in Core extensions ####
100
-
Selenium IDE loads custom [Core extensions][core extension] twice (reported in [ThirdPartyIssues](ThirdPartyIssues) > [Core extensions are loaded 2x](https://github.com/SeleniumHQ/selenium/issues/1549)). That applies regardless of whether you use Selenium IDE menu Options > Options > General > Selenium Core extensions, or whether you use [ExtensionSequencer](ExtensionSequencer).
100
+
Selenium IDE loads custom [Core extensions][core extension] twice (reported in [ThirdPartyIssues](ThirdPartyIssues) > [Core extensions are loaded 2x](https://github.com/SeleniumHQ/selenium/issues/1549)). That applies regardless of whether you use Selenium IDE menu Options > Options > General > Selenium Core extensions, or whether you use [Extension Sequencer].
101
101
102
102
Custom Core file(s) get first loaded at the start of Selenium IDE. Then they get loaded once more when you run a Selenese command (or a whole [case] or [suite]) for the first time. So, when you use Firefox Browser Toolbox/Debugger, do it only after you've run at least one Selenese command. Browser Toolbox/Debugger reports those files with `?numericTimeStamp` appended to their file names. For each [Core extension] pick the one that has the highest timestamp.
0 commit comments