Repository files navigation

Automated testing

Amber is the automation driver used to coordinate product and tool validation. She runs command-line test steps, captures the evidence produced by those steps, and writes structured LaTeX fragments that autodoc can assemble into a validation report.

Amber is a complete product checkout when cloned under ~/soup/amber. She is self-validating: the same Amber workflow used by downstream products is used to exercise Amber's own command-line behavior and build her validation report. Amber borrows from a Ruby-on-Rails concept of convention over configuration. In this regard, Amber consumes YAML documents placed beneath a factory directory root and writes generated evidence beneath test-output.

Review Amber's report directory to see the automation and report-generation pattern used by the related ~/soup products. example.pdf has been provided to demonstrate the automation framework components amber, autodoc, docbld, and tlc-article.

TL;DR

Released version

1.6.4.415

Working with source

Copy the text below and paste into a shell.

git clone https://github.com/traap/amber.git

Build and install Amber

cd amber && rake build:amber

Validate Amber

cd amber && rake validate:amber

The validation task fails when required environment variables are missing, when Amber cannot generate her evidence, or when docbld cannot rebuild and deploy the report.

Supported Systems

amber is targeted to work seamlessly with Linux distributions.

Prerequisites

  1. Ruby
  2. Bundler
  3. Rake

Optional components are only needed if you want to validate Amber and

build Amber's documentation

  1. TexLive
  2. autodoc
  3. docbld
  4. tlc-article

Input Factory

A YAML Plan

plan:
name: A plan namepurpose: The purpose of this test plan.includes:
- suite:
- name: a-suite-name

A YAML Suite

suite:
name: A Suite Namepurpose: The purpose of this test suite.requirement: 1, 2, and 3.includes:
- case:
- name: a-test-case
- name: another-test-case
- name: yet-another-test-case

A YAML Case

case:
name: First Test Casepurpose: Demonstrate requirements are met.requirement: 1, 2, and 3steps:
- confirm: Program echo has been installed.expectation: echo installation location is displayed.sudo: truecommand: whichargument: echoevidence: Starts on next line.
- confirm: Program date has been installed.expectation: date installation location is displayed.sudo: falsecommand: whichargument: dateevidence: Starts on next line.
- confirm: Program man has been installed.expectation: man installation location is displayed.sudo: falsecommand: whichargument: manevidence: Starts on next line.

Amber directory convention

../factory
../factory/config
../factory/config/app_config.yaml
../factory
../factory/plan
../factory/plan/a-plan-name/a-plan-name.yaml
../factory/suite
../factory/suite/a-suite-name/a-suite-name.yaml
../factory/case
../factory/case/a-test-case/a-test-case.yaml
../factory/case/another-test-case/another-test-case.yaml
../factory/case/yet-another-test-case/yet-another-test-case.yaml

Output Factory

Generated by amber

../test-output/factory
../test-output/factory/plan
../test-output/factory/plan/a-plan-name/a-plan-name.tex
../test-output/factory/suite
../test-output/factory/suite/a-suite-name/a-suite-name.tex
../test-output/factory/case
../test-output/factory/case/a-test-case/a-test-case.tex
../test-output/factory/case/a-test-case/a-test-case-step-001.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-status.tex
LaTeX test-results output
\tpo{full/path/to/test-output/factory/plan/a-plan-name/a-plan-nam}
\tso{full/path/to/test-output/factory/suite/a-suite-name/a-suite-nam}
\tco{full/path/to/test-output/factory/case/t001/t001}
\tco{full/path/to/test-output/factory/case/t002/t002}
\tco{full/path/to/test-output/factory/case/t003/t003}
LaTeX macros

test plan output (tpo), test suite output (tso), and test case output (tco) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. amber must create an output factory containing files before they can be automatically consumed.

Generated by amber when --language and --browser are used

../test-output/factory
../test-output/factory/Chrome/fr-eu/plan
../test-output/factory/Chrome/fr-eu/plan/a-plan-name/a-plan-name.tex
../test-output/factory/Chrome/fr-eu/suite
../test-output/factory/Chrome/fr-eu/suite/a-suite-name/a-suite-name.tex
../test-output/factory/Chrome/fr-eu/case
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-status.tex
LaTeX test-results output
\tpoC{Chrome}{fr-eu}{factory/plan/a-plan-name/a-plan-name}
\tsoC{Chrome}{fr-eu}{factory/suite/a-suite-name/a-suite-nam}
\tcoC{Chrome}{fr-eu}{factory/case/t001/t001}
\tcoC{Chrome}{fr-eu}{factory/case/t002/t002}
\tcoC{Chrome}{fr-eu}{factory/case/t003/t003}
LaTeX macros

test plan output (tpoC), test suite output (tsoC), and test case output (tcoC) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. Amber must create an output factory containing files before they can be automatically consumed.

Console output

amber captures status, system out, and system error and records the results to the a-test-case.tex file.

Step files

amber records PASS or FAIL for each Test Step. The result is determined by the program that amber runs.

PNG files

Any custom program amber invokes can take a screen capture and record it as test-output/factory/case/a-test-case/a-test-case-001.png. Multiple PNG files are supported.

CSV files

Any custom program amber invokes can record CSV files as test-output/factory/case/a-test-case/a-test-case-001.csv. Multiple CSV files are supported.

amber command line

amber --help
Usage: amber [options]
Specific options:
-b, --browser BROWSER Select Browser
["None", "Chrome", "Edge", "Firefox", "IE",
"Opera"]
-n, --nodryrun No Dryrun
-e, --log-environment List environment
-f, --file x,y,x File name
-l, --language LANGUAGE Select language
["zz", "cs", "da", "de", "en", "es", "fr-ca",
"fr-eu", "it", "ne", "no", "pl", "ro", "sv"]
-v, --verbose Verbose
-L, --log-command Log Command
-r, --log-requirement Log Requirement
-S, --simulate Simulate run to create Test Output
directory.
-O, --obliterate Obliterate Test Output directory before Test
Execution.
-w, --writer WRITER Select writer
["Ascii", "LaTeX"]
-p, --plan x,y,x Plan name
-s, --suite x,y,x Suite name
-c, --case x,y,x Case name
-h, --help Show this message
--version Show version
-d, --dump Dump options (must be last).

General

--help

Show this message.

1.6.0.367 is the current version.

--verbose

Log the commands that will be run when --nodryrun is used. NOTE: This option was disabled because Amber writes the commands to the Test Output Factory. This occurs because Amber is capturing standard input, standard output, and standard error. Amber conditionally writes either standard output or standard error to the Test Output Factory based on the exit status of the program run.

Input Factory

--plan

A comma-separated list of test plan names amber is to process. The following directory and YAML file name convention is mandatory: factory/plan/a-plan/a-plan.yaml.

--suite

A comma-separated list of test suite names amber is to process. The following directory and YAML file name convention is mandatory: factory/suite/a-suite/a-suite.yaml.

--case

A comma-separated list of test case names amber is to process. The following directory and YAML file name convention is mandatory: factory/case/suite/a-case/a-case.yaml.

--file

A comma-separated list of file names amber is to process.

Substitution

--browser

amber uses Chrome by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that uses a Web test driver.

--language

amber uses English (en) by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that requires internationalization and localization.

Output Factory

--log-command

Amber recursively calls Amber. test-output/commands.log shows each Amber invocation.

--log-requirement

test-output/requirements.log is used to record each requirement and YAML file that references a requirement.

--nodryrun

By default, amber does not have side effects when run. You must explicitly use the --nodryrun option to cause side effects. The commands that would have been executed are echoed to system out.

--simulate

The simulate option is used to create a Test Output directory so that you can design your report. Each command defined in your Test Case YAML file is echoed to the Test Output directory Test Case file.

--obliterate

The Test Output directory is obliterated before running any Tests.

--environment

A list of environment variables amber records in the output factory. See environment.rb for a complete listing of files.

Add these functions to .bashrc

AMBERPATH=${HOME}/git/amber
export AMBERPATH
functionnewfactoryitem() {
${AMBERPATH}/bin/newfactoryitem $@
}
functioncheck-test-output() {
echo grep -rw --include=\*step*.* test-output/ -e $1
grep -rw --include=\*step*.* test-output/ -e $1
}
functionpass() {
check-test-output PASS
}
functionfail() {
check-test-output FAIL
}
functionrequirements() {
echo grep -rw --include=\*.yaml factory/ -e 'requirement:'
grep -rw --include=\*.yaml factory/ -e 'requirement:'
}

Amber demonstration

Amber has a Test Input Factory that is used to validate Amber. The following commands will demonstrate producing amber.pdf.

  1. -n, --nodryrun
  2. -e, --environment
  3. -L, --log-command
  4. -r, --log-requirement
  5. -O, --obliterate
  6. -p, --plan
cd git/amber/report
rake validate:amber

Amber demonstration output

  1. git/amber/report/test-output/commands.log
  2. git/amber/report/test-output/environment.tex
  3. git/amber/report/test-output/requirements.csv
  4. git/amber/report/test-output/test-results.tex
  5. git/amber/report/_build/amber.pdf

About

Automated command line testing.

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Automated testing

Amber is the automation driver used to coordinate product and tool validation. She runs command-line test steps, captures the evidence produced by those steps, and writes structured LaTeX fragments that autodoc can assemble into a validation report.

Amber is a complete product checkout when cloned under ~/soup/amber. She is self-validating: the same Amber workflow used by downstream products is used to exercise Amber's own command-line behavior and build her validation report. Amber borrows from a Ruby-on-Rails concept of convention over configuration. In this regard, Amber consumes YAML documents placed beneath a factory directory root and writes generated evidence beneath test-output.

Review Amber's report directory to see the automation and report-generation pattern used by the related ~/soup products. example.pdf has been provided to demonstrate the automation framework components amber, autodoc, docbld, and tlc-article.

TL;DR

Released version

1.6.4.415

Working with source

Copy the text below and paste into a shell.

git clone https://github.com/traap/amber.git

Build and install Amber

cd amber && rake build:amber

Validate Amber

cd amber && rake validate:amber

The validation task fails when required environment variables are missing, when Amber cannot generate her evidence, or when docbld cannot rebuild and deploy the report.

Supported Systems

amber is targeted to work seamlessly with Linux distributions.

Prerequisites

  1. Ruby
  2. Bundler
  3. Rake

Optional components are only needed if you want to validate Amber and

build Amber's documentation

  1. TexLive
  2. autodoc
  3. docbld
  4. tlc-article

Input Factory

A YAML Plan

plan:
name: A plan namepurpose: The purpose of this test plan.includes:
- suite:
- name: a-suite-name

A YAML Suite

suite:
name: A Suite Namepurpose: The purpose of this test suite.requirement: 1, 2, and 3.includes:
- case:
- name: a-test-case
- name: another-test-case
- name: yet-another-test-case

A YAML Case

case:
name: First Test Casepurpose: Demonstrate requirements are met.requirement: 1, 2, and 3steps:
- confirm: Program echo has been installed.expectation: echo installation location is displayed.sudo: truecommand: whichargument: echoevidence: Starts on next line.
- confirm: Program date has been installed.expectation: date installation location is displayed.sudo: falsecommand: whichargument: dateevidence: Starts on next line.
- confirm: Program man has been installed.expectation: man installation location is displayed.sudo: falsecommand: whichargument: manevidence: Starts on next line.

Amber directory convention

../factory
../factory/config
../factory/config/app_config.yaml
../factory
../factory/plan
../factory/plan/a-plan-name/a-plan-name.yaml
../factory/suite
../factory/suite/a-suite-name/a-suite-name.yaml
../factory/case
../factory/case/a-test-case/a-test-case.yaml
../factory/case/another-test-case/another-test-case.yaml
../factory/case/yet-another-test-case/yet-another-test-case.yaml

Output Factory

Generated by amber

../test-output/factory
../test-output/factory/plan
../test-output/factory/plan/a-plan-name/a-plan-name.tex
../test-output/factory/suite
../test-output/factory/suite/a-suite-name/a-suite-name.tex
../test-output/factory/case
../test-output/factory/case/a-test-case/a-test-case.tex
../test-output/factory/case/a-test-case/a-test-case-step-001.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-status.tex
LaTeX test-results output
\tpo{full/path/to/test-output/factory/plan/a-plan-name/a-plan-nam}
\tso{full/path/to/test-output/factory/suite/a-suite-name/a-suite-nam}
\tco{full/path/to/test-output/factory/case/t001/t001}
\tco{full/path/to/test-output/factory/case/t002/t002}
\tco{full/path/to/test-output/factory/case/t003/t003}
LaTeX macros

test plan output (tpo), test suite output (tso), and test case output (tco) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. amber must create an output factory containing files before they can be automatically consumed.

Generated by amber when --language and --browser are used

../test-output/factory
../test-output/factory/Chrome/fr-eu/plan
../test-output/factory/Chrome/fr-eu/plan/a-plan-name/a-plan-name.tex
../test-output/factory/Chrome/fr-eu/suite
../test-output/factory/Chrome/fr-eu/suite/a-suite-name/a-suite-name.tex
../test-output/factory/Chrome/fr-eu/case
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-status.tex
LaTeX test-results output
\tpoC{Chrome}{fr-eu}{factory/plan/a-plan-name/a-plan-name}
\tsoC{Chrome}{fr-eu}{factory/suite/a-suite-name/a-suite-nam}
\tcoC{Chrome}{fr-eu}{factory/case/t001/t001}
\tcoC{Chrome}{fr-eu}{factory/case/t002/t002}
\tcoC{Chrome}{fr-eu}{factory/case/t003/t003}
LaTeX macros

test plan output (tpoC), test suite output (tsoC), and test case output (tcoC) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. Amber must create an output factory containing files before they can be automatically consumed.

Console output

amber captures status, system out, and system error and records the results to the a-test-case.tex file.

Step files

amber records PASS or FAIL for each Test Step. The result is determined by the program that amber runs.

PNG files

Any custom program amber invokes can take a screen capture and record it as test-output/factory/case/a-test-case/a-test-case-001.png. Multiple PNG files are supported.

CSV files

Any custom program amber invokes can record CSV files as test-output/factory/case/a-test-case/a-test-case-001.csv. Multiple CSV files are supported.

amber command line

amber --help
Usage: amber [options]
Specific options:
-b, --browser BROWSER Select Browser
["None", "Chrome", "Edge", "Firefox", "IE",
"Opera"]
-n, --nodryrun No Dryrun
-e, --log-environment List environment
-f, --file x,y,x File name
-l, --language LANGUAGE Select language
["zz", "cs", "da", "de", "en", "es", "fr-ca",
"fr-eu", "it", "ne", "no", "pl", "ro", "sv"]
-v, --verbose Verbose
-L, --log-command Log Command
-r, --log-requirement Log Requirement
-S, --simulate Simulate run to create Test Output
directory.
-O, --obliterate Obliterate Test Output directory before Test
Execution.
-w, --writer WRITER Select writer
["Ascii", "LaTeX"]
-p, --plan x,y,x Plan name
-s, --suite x,y,x Suite name
-c, --case x,y,x Case name
-h, --help Show this message
--version Show version
-d, --dump Dump options (must be last).

General

--help

Show this message.

1.6.0.367 is the current version.

--verbose

Log the commands that will be run when --nodryrun is used. NOTE: This option was disabled because Amber writes the commands to the Test Output Factory. This occurs because Amber is capturing standard input, standard output, and standard error. Amber conditionally writes either standard output or standard error to the Test Output Factory based on the exit status of the program run.

Input Factory

--plan

A comma-separated list of test plan names amber is to process. The following directory and YAML file name convention is mandatory: factory/plan/a-plan/a-plan.yaml.

--suite

A comma-separated list of test suite names amber is to process. The following directory and YAML file name convention is mandatory: factory/suite/a-suite/a-suite.yaml.

--case

A comma-separated list of test case names amber is to process. The following directory and YAML file name convention is mandatory: factory/case/suite/a-case/a-case.yaml.

--file

A comma-separated list of file names amber is to process.

Substitution

--browser

amber uses Chrome by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that uses a Web test driver.

--language

amber uses English (en) by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that requires internationalization and localization.

Output Factory

--log-command

Amber recursively calls Amber. test-output/commands.log shows each Amber invocation.

--log-requirement

test-output/requirements.log is used to record each requirement and YAML file that references a requirement.

--nodryrun

By default, amber does not have side effects when run. You must explicitly use the --nodryrun option to cause side effects. The commands that would have been executed are echoed to system out.

--simulate

The simulate option is used to create a Test Output directory so that you can design your report. Each command defined in your Test Case YAML file is echoed to the Test Output directory Test Case file.

--obliterate

The Test Output directory is obliterated before running any Tests.

--environment

A list of environment variables amber records in the output factory. See environment.rb for a complete listing of files.

Add these functions to .bashrc

AMBERPATH=${HOME}/git/amber
export AMBERPATH
functionnewfactoryitem() {
${AMBERPATH}/bin/newfactoryitem $@
}
functioncheck-test-output() {
echo grep -rw --include=\*step*.* test-output/ -e $1
grep -rw --include=\*step*.* test-output/ -e $1
}
functionpass() {
check-test-output PASS
}
functionfail() {
check-test-output FAIL
}
functionrequirements() {
echo grep -rw --include=\*.yaml factory/ -e 'requirement:'
grep -rw --include=\*.yaml factory/ -e 'requirement:'
}

Amber demonstration

Amber has a Test Input Factory that is used to validate Amber. The following commands will demonstrate producing amber.pdf.

  1. -n, --nodryrun
  2. -e, --environment
  3. -L, --log-command
  4. -r, --log-requirement
  5. -O, --obliterate
  6. -p, --plan
cd git/amber/report
rake validate:amber

Amber demonstration output

  1. git/amber/report/test-output/commands.log
  2. git/amber/report/test-output/environment.tex
  3. git/amber/report/test-output/requirements.csv
  4. git/amber/report/test-output/test-results.tex
  5. git/amber/report/_build/amber.pdf

About

Automated command line testing.

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Automated testing

Amber is the automation driver used to coordinate product and tool validation. She runs command-line test steps, captures the evidence produced by those steps, and writes structured LaTeX fragments that autodoc can assemble into a validation report.

Amber is a complete product checkout when cloned under ~/soup/amber. She is self-validating: the same Amber workflow used by downstream products is used to exercise Amber's own command-line behavior and build her validation report. Amber borrows from a Ruby-on-Rails concept of convention over configuration. In this regard, Amber consumes YAML documents placed beneath a factory directory root and writes generated evidence beneath test-output.

Review Amber's report directory to see the automation and report-generation pattern used by the related ~/soup products. example.pdf has been provided to demonstrate the automation framework components amber, autodoc, docbld, and tlc-article.

TL;DR

Released version

1.6.4.415

Working with source

Copy the text below and paste into a shell.

git clone https://github.com/traap/amber.git

Build and install Amber

cd amber && rake build:amber

Validate Amber

cd amber && rake validate:amber

The validation task fails when required environment variables are missing, when Amber cannot generate her evidence, or when docbld cannot rebuild and deploy the report.

Supported Systems

amber is targeted to work seamlessly with Linux distributions.

Prerequisites

  1. Ruby
  2. Bundler
  3. Rake

Optional components are only needed if you want to validate Amber and

build Amber's documentation

  1. TexLive
  2. autodoc
  3. docbld
  4. tlc-article

Input Factory

A YAML Plan

plan:
name: A plan namepurpose: The purpose of this test plan.includes:
- suite:
- name: a-suite-name

A YAML Suite

suite:
name: A Suite Namepurpose: The purpose of this test suite.requirement: 1, 2, and 3.includes:
- case:
- name: a-test-case
- name: another-test-case
- name: yet-another-test-case

A YAML Case

case:
name: First Test Casepurpose: Demonstrate requirements are met.requirement: 1, 2, and 3steps:
- confirm: Program echo has been installed.expectation: echo installation location is displayed.sudo: truecommand: whichargument: echoevidence: Starts on next line.
- confirm: Program date has been installed.expectation: date installation location is displayed.sudo: falsecommand: whichargument: dateevidence: Starts on next line.
- confirm: Program man has been installed.expectation: man installation location is displayed.sudo: falsecommand: whichargument: manevidence: Starts on next line.

Amber directory convention

../factory
../factory/config
../factory/config/app_config.yaml
../factory
../factory/plan
../factory/plan/a-plan-name/a-plan-name.yaml
../factory/suite
../factory/suite/a-suite-name/a-suite-name.yaml
../factory/case
../factory/case/a-test-case/a-test-case.yaml
../factory/case/another-test-case/another-test-case.yaml
../factory/case/yet-another-test-case/yet-another-test-case.yaml

Output Factory

Generated by amber

../test-output/factory
../test-output/factory/plan
../test-output/factory/plan/a-plan-name/a-plan-name.tex
../test-output/factory/suite
../test-output/factory/suite/a-suite-name/a-suite-name.tex
../test-output/factory/case
../test-output/factory/case/a-test-case/a-test-case.tex
../test-output/factory/case/a-test-case/a-test-case-step-001.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-status.tex
LaTeX test-results output
\tpo{full/path/to/test-output/factory/plan/a-plan-name/a-plan-nam}
\tso{full/path/to/test-output/factory/suite/a-suite-name/a-suite-nam}
\tco{full/path/to/test-output/factory/case/t001/t001}
\tco{full/path/to/test-output/factory/case/t002/t002}
\tco{full/path/to/test-output/factory/case/t003/t003}
LaTeX macros

test plan output (tpo), test suite output (tso), and test case output (tco) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. amber must create an output factory containing files before they can be automatically consumed.

Generated by amber when --language and --browser are used

../test-output/factory
../test-output/factory/Chrome/fr-eu/plan
../test-output/factory/Chrome/fr-eu/plan/a-plan-name/a-plan-name.tex
../test-output/factory/Chrome/fr-eu/suite
../test-output/factory/Chrome/fr-eu/suite/a-suite-name/a-suite-name.tex
../test-output/factory/Chrome/fr-eu/case
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-status.tex
LaTeX test-results output
\tpoC{Chrome}{fr-eu}{factory/plan/a-plan-name/a-plan-name}
\tsoC{Chrome}{fr-eu}{factory/suite/a-suite-name/a-suite-nam}
\tcoC{Chrome}{fr-eu}{factory/case/t001/t001}
\tcoC{Chrome}{fr-eu}{factory/case/t002/t002}
\tcoC{Chrome}{fr-eu}{factory/case/t003/t003}
LaTeX macros

test plan output (tpoC), test suite output (tsoC), and test case output (tcoC) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. Amber must create an output factory containing files before they can be automatically consumed.

Console output

amber captures status, system out, and system error and records the results to the a-test-case.tex file.

Step files

amber records PASS or FAIL for each Test Step. The result is determined by the program that amber runs.

PNG files

Any custom program amber invokes can take a screen capture and record it as test-output/factory/case/a-test-case/a-test-case-001.png. Multiple PNG files are supported.

CSV files

Any custom program amber invokes can record CSV files as test-output/factory/case/a-test-case/a-test-case-001.csv. Multiple CSV files are supported.

amber command line

amber --help
Usage: amber [options]
Specific options:
-b, --browser BROWSER Select Browser
["None", "Chrome", "Edge", "Firefox", "IE",
"Opera"]
-n, --nodryrun No Dryrun
-e, --log-environment List environment
-f, --file x,y,x File name
-l, --language LANGUAGE Select language
["zz", "cs", "da", "de", "en", "es", "fr-ca",
"fr-eu", "it", "ne", "no", "pl", "ro", "sv"]
-v, --verbose Verbose
-L, --log-command Log Command
-r, --log-requirement Log Requirement
-S, --simulate Simulate run to create Test Output
directory.
-O, --obliterate Obliterate Test Output directory before Test
Execution.
-w, --writer WRITER Select writer
["Ascii", "LaTeX"]
-p, --plan x,y,x Plan name
-s, --suite x,y,x Suite name
-c, --case x,y,x Case name
-h, --help Show this message
--version Show version
-d, --dump Dump options (must be last).

General

--help

Show this message.

1.6.0.367 is the current version.

--verbose

Log the commands that will be run when --nodryrun is used. NOTE: This option was disabled because Amber writes the commands to the Test Output Factory. This occurs because Amber is capturing standard input, standard output, and standard error. Amber conditionally writes either standard output or standard error to the Test Output Factory based on the exit status of the program run.

Input Factory

--plan

A comma-separated list of test plan names amber is to process. The following directory and YAML file name convention is mandatory: factory/plan/a-plan/a-plan.yaml.

--suite

A comma-separated list of test suite names amber is to process. The following directory and YAML file name convention is mandatory: factory/suite/a-suite/a-suite.yaml.

--case

A comma-separated list of test case names amber is to process. The following directory and YAML file name convention is mandatory: factory/case/suite/a-case/a-case.yaml.

--file

A comma-separated list of file names amber is to process.

Substitution

--browser

amber uses Chrome by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that uses a Web test driver.

--language

amber uses English (en) by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that requires internationalization and localization.

Output Factory

--log-command

Amber recursively calls Amber. test-output/commands.log shows each Amber invocation.

--log-requirement

test-output/requirements.log is used to record each requirement and YAML file that references a requirement.

--nodryrun

By default, amber does not have side effects when run. You must explicitly use the --nodryrun option to cause side effects. The commands that would have been executed are echoed to system out.

--simulate

The simulate option is used to create a Test Output directory so that you can design your report. Each command defined in your Test Case YAML file is echoed to the Test Output directory Test Case file.

--obliterate

The Test Output directory is obliterated before running any Tests.

--environment

A list of environment variables amber records in the output factory. See environment.rb for a complete listing of files.

Add these functions to .bashrc

AMBERPATH=${HOME}/git/amber
export AMBERPATH
functionnewfactoryitem() {
${AMBERPATH}/bin/newfactoryitem $@
}
functioncheck-test-output() {
echo grep -rw --include=\*step*.* test-output/ -e $1
grep -rw --include=\*step*.* test-output/ -e $1
}
functionpass() {
check-test-output PASS
}
functionfail() {
check-test-output FAIL
}
functionrequirements() {
echo grep -rw --include=\*.yaml factory/ -e 'requirement:'
grep -rw --include=\*.yaml factory/ -e 'requirement:'
}

Amber demonstration

Amber has a Test Input Factory that is used to validate Amber. The following commands will demonstrate producing amber.pdf.

  1. -n, --nodryrun
  2. -e, --environment
  3. -L, --log-command
  4. -r, --log-requirement
  5. -O, --obliterate
  6. -p, --plan
cd git/amber/report
rake validate:amber

Amber demonstration output

  1. git/amber/report/test-output/commands.log
  2. git/amber/report/test-output/environment.tex
  3. git/amber/report/test-output/requirements.csv
  4. git/amber/report/test-output/test-results.tex
  5. git/amber/report/_build/amber.pdf

About

Automated command line testing.

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Automated testing

Amber is the automation driver used to coordinate product and tool validation. She runs command-line test steps, captures the evidence produced by those steps, and writes structured LaTeX fragments that autodoc can assemble into a validation report.

Amber is a complete product checkout when cloned under ~/soup/amber. She is self-validating: the same Amber workflow used by downstream products is used to exercise Amber's own command-line behavior and build her validation report. Amber borrows from a Ruby-on-Rails concept of convention over configuration. In this regard, Amber consumes YAML documents placed beneath a factory directory root and writes generated evidence beneath test-output.

Review Amber's report directory to see the automation and report-generation pattern used by the related ~/soup products. example.pdf has been provided to demonstrate the automation framework components amber, autodoc, docbld, and tlc-article.

TL;DR

Released version

1.6.4.415

Working with source

Copy the text below and paste into a shell.

git clone https://github.com/traap/amber.git

Build and install Amber

cd amber && rake build:amber

Validate Amber

cd amber && rake validate:amber

The validation task fails when required environment variables are missing, when Amber cannot generate her evidence, or when docbld cannot rebuild and deploy the report.

Supported Systems

amber is targeted to work seamlessly with Linux distributions.

Prerequisites

  1. Ruby
  2. Bundler
  3. Rake

Optional components are only needed if you want to validate Amber and

build Amber's documentation

  1. TexLive
  2. autodoc
  3. docbld
  4. tlc-article

Input Factory

A YAML Plan

plan:
name: A plan namepurpose: The purpose of this test plan.includes:
- suite:
- name: a-suite-name

A YAML Suite

suite:
name: A Suite Namepurpose: The purpose of this test suite.requirement: 1, 2, and 3.includes:
- case:
- name: a-test-case
- name: another-test-case
- name: yet-another-test-case

A YAML Case

case:
name: First Test Casepurpose: Demonstrate requirements are met.requirement: 1, 2, and 3steps:
- confirm: Program echo has been installed.expectation: echo installation location is displayed.sudo: truecommand: whichargument: echoevidence: Starts on next line.
- confirm: Program date has been installed.expectation: date installation location is displayed.sudo: falsecommand: whichargument: dateevidence: Starts on next line.
- confirm: Program man has been installed.expectation: man installation location is displayed.sudo: falsecommand: whichargument: manevidence: Starts on next line.

Amber directory convention

../factory
../factory/config
../factory/config/app_config.yaml
../factory
../factory/plan
../factory/plan/a-plan-name/a-plan-name.yaml
../factory/suite
../factory/suite/a-suite-name/a-suite-name.yaml
../factory/case
../factory/case/a-test-case/a-test-case.yaml
../factory/case/another-test-case/another-test-case.yaml
../factory/case/yet-another-test-case/yet-another-test-case.yaml

Output Factory

Generated by amber

../test-output/factory
../test-output/factory/plan
../test-output/factory/plan/a-plan-name/a-plan-name.tex
../test-output/factory/suite
../test-output/factory/suite/a-suite-name/a-suite-name.tex
../test-output/factory/case
../test-output/factory/case/a-test-case/a-test-case.tex
../test-output/factory/case/a-test-case/a-test-case-step-001.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-status.tex
LaTeX test-results output
\tpo{full/path/to/test-output/factory/plan/a-plan-name/a-plan-nam}
\tso{full/path/to/test-output/factory/suite/a-suite-name/a-suite-nam}
\tco{full/path/to/test-output/factory/case/t001/t001}
\tco{full/path/to/test-output/factory/case/t002/t002}
\tco{full/path/to/test-output/factory/case/t003/t003}
LaTeX macros

test plan output (tpo), test suite output (tso), and test case output (tco) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. amber must create an output factory containing files before they can be automatically consumed.

Generated by amber when --language and --browser are used

../test-output/factory
../test-output/factory/Chrome/fr-eu/plan
../test-output/factory/Chrome/fr-eu/plan/a-plan-name/a-plan-name.tex
../test-output/factory/Chrome/fr-eu/suite
../test-output/factory/Chrome/fr-eu/suite/a-suite-name/a-suite-name.tex
../test-output/factory/Chrome/fr-eu/case
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-status.tex
LaTeX test-results output
\tpoC{Chrome}{fr-eu}{factory/plan/a-plan-name/a-plan-name}
\tsoC{Chrome}{fr-eu}{factory/suite/a-suite-name/a-suite-nam}
\tcoC{Chrome}{fr-eu}{factory/case/t001/t001}
\tcoC{Chrome}{fr-eu}{factory/case/t002/t002}
\tcoC{Chrome}{fr-eu}{factory/case/t003/t003}
LaTeX macros

test plan output (tpoC), test suite output (tsoC), and test case output (tcoC) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. Amber must create an output factory containing files before they can be automatically consumed.

Console output

amber captures status, system out, and system error and records the results to the a-test-case.tex file.

Step files

amber records PASS or FAIL for each Test Step. The result is determined by the program that amber runs.

PNG files

Any custom program amber invokes can take a screen capture and record it as test-output/factory/case/a-test-case/a-test-case-001.png. Multiple PNG files are supported.

CSV files

Any custom program amber invokes can record CSV files as test-output/factory/case/a-test-case/a-test-case-001.csv. Multiple CSV files are supported.

amber command line

amber --help
Usage: amber [options]
Specific options:
-b, --browser BROWSER Select Browser
["None", "Chrome", "Edge", "Firefox", "IE",
"Opera"]
-n, --nodryrun No Dryrun
-e, --log-environment List environment
-f, --file x,y,x File name
-l, --language LANGUAGE Select language
["zz", "cs", "da", "de", "en", "es", "fr-ca",
"fr-eu", "it", "ne", "no", "pl", "ro", "sv"]
-v, --verbose Verbose
-L, --log-command Log Command
-r, --log-requirement Log Requirement
-S, --simulate Simulate run to create Test Output
directory.
-O, --obliterate Obliterate Test Output directory before Test
Execution.
-w, --writer WRITER Select writer
["Ascii", "LaTeX"]
-p, --plan x,y,x Plan name
-s, --suite x,y,x Suite name
-c, --case x,y,x Case name
-h, --help Show this message
--version Show version
-d, --dump Dump options (must be last).

General

--help

Show this message.

1.6.0.367 is the current version.

--verbose

Log the commands that will be run when --nodryrun is used. NOTE: This option was disabled because Amber writes the commands to the Test Output Factory. This occurs because Amber is capturing standard input, standard output, and standard error. Amber conditionally writes either standard output or standard error to the Test Output Factory based on the exit status of the program run.

Input Factory

--plan

A comma-separated list of test plan names amber is to process. The following directory and YAML file name convention is mandatory: factory/plan/a-plan/a-plan.yaml.

--suite

A comma-separated list of test suite names amber is to process. The following directory and YAML file name convention is mandatory: factory/suite/a-suite/a-suite.yaml.

--case

A comma-separated list of test case names amber is to process. The following directory and YAML file name convention is mandatory: factory/case/suite/a-case/a-case.yaml.

--file

A comma-separated list of file names amber is to process.

Substitution

--browser

amber uses Chrome by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that uses a Web test driver.

--language

amber uses English (en) by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that requires internationalization and localization.

Output Factory

--log-command

Amber recursively calls Amber. test-output/commands.log shows each Amber invocation.

--log-requirement

test-output/requirements.log is used to record each requirement and YAML file that references a requirement.

--nodryrun

By default, amber does not have side effects when run. You must explicitly use the --nodryrun option to cause side effects. The commands that would have been executed are echoed to system out.

--simulate

The simulate option is used to create a Test Output directory so that you can design your report. Each command defined in your Test Case YAML file is echoed to the Test Output directory Test Case file.

--obliterate

The Test Output directory is obliterated before running any Tests.

--environment

A list of environment variables amber records in the output factory. See environment.rb for a complete listing of files.

Add these functions to .bashrc

AMBERPATH=${HOME}/git/amber
export AMBERPATH
functionnewfactoryitem() {
${AMBERPATH}/bin/newfactoryitem $@
}
functioncheck-test-output() {
echo grep -rw --include=\*step*.* test-output/ -e $1
grep -rw --include=\*step*.* test-output/ -e $1
}
functionpass() {
check-test-output PASS
}
functionfail() {
check-test-output FAIL
}
functionrequirements() {
echo grep -rw --include=\*.yaml factory/ -e 'requirement:'
grep -rw --include=\*.yaml factory/ -e 'requirement:'
}

Amber demonstration

Amber has a Test Input Factory that is used to validate Amber. The following commands will demonstrate producing amber.pdf.

  1. -n, --nodryrun
  2. -e, --environment
  3. -L, --log-command
  4. -r, --log-requirement
  5. -O, --obliterate
  6. -p, --plan
cd git/amber/report
rake validate:amber

Amber demonstration output

  1. git/amber/report/test-output/commands.log
  2. git/amber/report/test-output/environment.tex
  3. git/amber/report/test-output/requirements.csv
  4. git/amber/report/test-output/test-results.tex
  5. git/amber/report/_build/amber.pdf

About

Automated command line testing.

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Automated testing

Amber is the automation driver used to coordinate product and tool validation. She runs command-line test steps, captures the evidence produced by those steps, and writes structured LaTeX fragments that autodoc can assemble into a validation report.

Amber is a complete product checkout when cloned under ~/soup/amber. She is self-validating: the same Amber workflow used by downstream products is used to exercise Amber's own command-line behavior and build her validation report. Amber borrows from a Ruby-on-Rails concept of convention over configuration. In this regard, Amber consumes YAML documents placed beneath a factory directory root and writes generated evidence beneath test-output.

Review Amber's report directory to see the automation and report-generation pattern used by the related ~/soup products. example.pdf has been provided to demonstrate the automation framework components amber, autodoc, docbld, and tlc-article.

TL;DR

Released version

1.6.4.415

Working with source

Copy the text below and paste into a shell.

git clone https://github.com/traap/amber.git

Build and install Amber

cd amber && rake build:amber

Validate Amber

cd amber && rake validate:amber

The validation task fails when required environment variables are missing, when Amber cannot generate her evidence, or when docbld cannot rebuild and deploy the report.

Supported Systems

amber is targeted to work seamlessly with Linux distributions.

Prerequisites

  1. Ruby
  2. Bundler
  3. Rake

Optional components are only needed if you want to validate Amber and

build Amber's documentation

  1. TexLive
  2. autodoc
  3. docbld
  4. tlc-article

Input Factory

A YAML Plan

plan:
name: A plan namepurpose: The purpose of this test plan.includes:
- suite:
- name: a-suite-name

A YAML Suite

suite:
name: A Suite Namepurpose: The purpose of this test suite.requirement: 1, 2, and 3.includes:
- case:
- name: a-test-case
- name: another-test-case
- name: yet-another-test-case

A YAML Case

case:
name: First Test Casepurpose: Demonstrate requirements are met.requirement: 1, 2, and 3steps:
- confirm: Program echo has been installed.expectation: echo installation location is displayed.sudo: truecommand: whichargument: echoevidence: Starts on next line.
- confirm: Program date has been installed.expectation: date installation location is displayed.sudo: falsecommand: whichargument: dateevidence: Starts on next line.
- confirm: Program man has been installed.expectation: man installation location is displayed.sudo: falsecommand: whichargument: manevidence: Starts on next line.

Amber directory convention

../factory
../factory/config
../factory/config/app_config.yaml
../factory
../factory/plan
../factory/plan/a-plan-name/a-plan-name.yaml
../factory/suite
../factory/suite/a-suite-name/a-suite-name.yaml
../factory/case
../factory/case/a-test-case/a-test-case.yaml
../factory/case/another-test-case/another-test-case.yaml
../factory/case/yet-another-test-case/yet-another-test-case.yaml

Output Factory

Generated by amber

../test-output/factory
../test-output/factory/plan
../test-output/factory/plan/a-plan-name/a-plan-name.tex
../test-output/factory/suite
../test-output/factory/suite/a-suite-name/a-suite-name.tex
../test-output/factory/case
../test-output/factory/case/a-test-case/a-test-case.tex
../test-output/factory/case/a-test-case/a-test-case-step-001.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-status.tex
LaTeX test-results output
\tpo{full/path/to/test-output/factory/plan/a-plan-name/a-plan-nam}
\tso{full/path/to/test-output/factory/suite/a-suite-name/a-suite-nam}
\tco{full/path/to/test-output/factory/case/t001/t001}
\tco{full/path/to/test-output/factory/case/t002/t002}
\tco{full/path/to/test-output/factory/case/t003/t003}
LaTeX macros

test plan output (tpo), test suite output (tso), and test case output (tco) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. amber must create an output factory containing files before they can be automatically consumed.

Generated by amber when --language and --browser are used

../test-output/factory
../test-output/factory/Chrome/fr-eu/plan
../test-output/factory/Chrome/fr-eu/plan/a-plan-name/a-plan-name.tex
../test-output/factory/Chrome/fr-eu/suite
../test-output/factory/Chrome/fr-eu/suite/a-suite-name/a-suite-name.tex
../test-output/factory/Chrome/fr-eu/case
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-status.tex
LaTeX test-results output
\tpoC{Chrome}{fr-eu}{factory/plan/a-plan-name/a-plan-name}
\tsoC{Chrome}{fr-eu}{factory/suite/a-suite-name/a-suite-nam}
\tcoC{Chrome}{fr-eu}{factory/case/t001/t001}
\tcoC{Chrome}{fr-eu}{factory/case/t002/t002}
\tcoC{Chrome}{fr-eu}{factory/case/t003/t003}
LaTeX macros

test plan output (tpoC), test suite output (tsoC), and test case output (tcoC) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. Amber must create an output factory containing files before they can be automatically consumed.

Console output

amber captures status, system out, and system error and records the results to the a-test-case.tex file.

Step files

amber records PASS or FAIL for each Test Step. The result is determined by the program that amber runs.

PNG files

Any custom program amber invokes can take a screen capture and record it as test-output/factory/case/a-test-case/a-test-case-001.png. Multiple PNG files are supported.

CSV files

Any custom program amber invokes can record CSV files as test-output/factory/case/a-test-case/a-test-case-001.csv. Multiple CSV files are supported.

amber command line

amber --help
Usage: amber [options]
Specific options:
-b, --browser BROWSER Select Browser
["None", "Chrome", "Edge", "Firefox", "IE",
"Opera"]
-n, --nodryrun No Dryrun
-e, --log-environment List environment
-f, --file x,y,x File name
-l, --language LANGUAGE Select language
["zz", "cs", "da", "de", "en", "es", "fr-ca",
"fr-eu", "it", "ne", "no", "pl", "ro", "sv"]
-v, --verbose Verbose
-L, --log-command Log Command
-r, --log-requirement Log Requirement
-S, --simulate Simulate run to create Test Output
directory.
-O, --obliterate Obliterate Test Output directory before Test
Execution.
-w, --writer WRITER Select writer
["Ascii", "LaTeX"]
-p, --plan x,y,x Plan name
-s, --suite x,y,x Suite name
-c, --case x,y,x Case name
-h, --help Show this message
--version Show version
-d, --dump Dump options (must be last).

General

--help

Show this message.

1.6.0.367 is the current version.

--verbose

Log the commands that will be run when --nodryrun is used. NOTE: This option was disabled because Amber writes the commands to the Test Output Factory. This occurs because Amber is capturing standard input, standard output, and standard error. Amber conditionally writes either standard output or standard error to the Test Output Factory based on the exit status of the program run.

Input Factory

--plan

A comma-separated list of test plan names amber is to process. The following directory and YAML file name convention is mandatory: factory/plan/a-plan/a-plan.yaml.

--suite

A comma-separated list of test suite names amber is to process. The following directory and YAML file name convention is mandatory: factory/suite/a-suite/a-suite.yaml.

--case

A comma-separated list of test case names amber is to process. The following directory and YAML file name convention is mandatory: factory/case/suite/a-case/a-case.yaml.

--file

A comma-separated list of file names amber is to process.

Substitution

--browser

amber uses Chrome by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that uses a Web test driver.

--language

amber uses English (en) by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that requires internationalization and localization.

Output Factory

--log-command

Amber recursively calls Amber. test-output/commands.log shows each Amber invocation.

--log-requirement

test-output/requirements.log is used to record each requirement and YAML file that references a requirement.

--nodryrun

By default, amber does not have side effects when run. You must explicitly use the --nodryrun option to cause side effects. The commands that would have been executed are echoed to system out.

--simulate

The simulate option is used to create a Test Output directory so that you can design your report. Each command defined in your Test Case YAML file is echoed to the Test Output directory Test Case file.

--obliterate

The Test Output directory is obliterated before running any Tests.

--environment

A list of environment variables amber records in the output factory. See environment.rb for a complete listing of files.

Add these functions to .bashrc

AMBERPATH=${HOME}/git/amber
export AMBERPATH
functionnewfactoryitem() {
${AMBERPATH}/bin/newfactoryitem $@
}
functioncheck-test-output() {
echo grep -rw --include=\*step*.* test-output/ -e $1
grep -rw --include=\*step*.* test-output/ -e $1
}
functionpass() {
check-test-output PASS
}
functionfail() {
check-test-output FAIL
}
functionrequirements() {
echo grep -rw --include=\*.yaml factory/ -e 'requirement:'
grep -rw --include=\*.yaml factory/ -e 'requirement:'
}

Amber demonstration

Amber has a Test Input Factory that is used to validate Amber. The following commands will demonstrate producing amber.pdf.

  1. -n, --nodryrun
  2. -e, --environment
  3. -L, --log-command
  4. -r, --log-requirement
  5. -O, --obliterate
  6. -p, --plan
cd git/amber/report
rake validate:amber

Amber demonstration output

  1. git/amber/report/test-output/commands.log
  2. git/amber/report/test-output/environment.tex
  3. git/amber/report/test-output/requirements.csv
  4. git/amber/report/test-output/test-results.tex
  5. git/amber/report/_build/amber.pdf

About

Automated command line testing.

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Automated testing

Amber is the automation driver used to coordinate product and tool validation. She runs command-line test steps, captures the evidence produced by those steps, and writes structured LaTeX fragments that autodoc can assemble into a validation report.

Amber is a complete product checkout when cloned under ~/soup/amber. She is self-validating: the same Amber workflow used by downstream products is used to exercise Amber's own command-line behavior and build her validation report. Amber borrows from a Ruby-on-Rails concept of convention over configuration. In this regard, Amber consumes YAML documents placed beneath a factory directory root and writes generated evidence beneath test-output.

Review Amber's report directory to see the automation and report-generation pattern used by the related ~/soup products. example.pdf has been provided to demonstrate the automation framework components amber, autodoc, docbld, and tlc-article.

TL;DR

Released version

1.6.4.415

Working with source

Copy the text below and paste into a shell.

git clone https://github.com/traap/amber.git

Build and install Amber

cd amber && rake build:amber

Validate Amber

cd amber && rake validate:amber

The validation task fails when required environment variables are missing, when Amber cannot generate her evidence, or when docbld cannot rebuild and deploy the report.

Supported Systems

amber is targeted to work seamlessly with Linux distributions.

Prerequisites

  1. Ruby
  2. Bundler
  3. Rake

Optional components are only needed if you want to validate Amber and

build Amber's documentation

  1. TexLive
  2. autodoc
  3. docbld
  4. tlc-article

Input Factory

A YAML Plan

plan:
name: A plan namepurpose: The purpose of this test plan.includes:
- suite:
- name: a-suite-name

A YAML Suite

suite:
name: A Suite Namepurpose: The purpose of this test suite.requirement: 1, 2, and 3.includes:
- case:
- name: a-test-case
- name: another-test-case
- name: yet-another-test-case

A YAML Case

case:
name: First Test Casepurpose: Demonstrate requirements are met.requirement: 1, 2, and 3steps:
- confirm: Program echo has been installed.expectation: echo installation location is displayed.sudo: truecommand: whichargument: echoevidence: Starts on next line.
- confirm: Program date has been installed.expectation: date installation location is displayed.sudo: falsecommand: whichargument: dateevidence: Starts on next line.
- confirm: Program man has been installed.expectation: man installation location is displayed.sudo: falsecommand: whichargument: manevidence: Starts on next line.

Amber directory convention

../factory
../factory/config
../factory/config/app_config.yaml
../factory
../factory/plan
../factory/plan/a-plan-name/a-plan-name.yaml
../factory/suite
../factory/suite/a-suite-name/a-suite-name.yaml
../factory/case
../factory/case/a-test-case/a-test-case.yaml
../factory/case/another-test-case/another-test-case.yaml
../factory/case/yet-another-test-case/yet-another-test-case.yaml

Output Factory

Generated by amber

../test-output/factory
../test-output/factory/plan
../test-output/factory/plan/a-plan-name/a-plan-name.tex
../test-output/factory/suite
../test-output/factory/suite/a-suite-name/a-suite-name.tex
../test-output/factory/case
../test-output/factory/case/a-test-case/a-test-case.tex
../test-output/factory/case/a-test-case/a-test-case-step-001.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-status.tex
LaTeX test-results output
\tpo{full/path/to/test-output/factory/plan/a-plan-name/a-plan-nam}
\tso{full/path/to/test-output/factory/suite/a-suite-name/a-suite-nam}
\tco{full/path/to/test-output/factory/case/t001/t001}
\tco{full/path/to/test-output/factory/case/t002/t002}
\tco{full/path/to/test-output/factory/case/t003/t003}
LaTeX macros

test plan output (tpo), test suite output (tso), and test case output (tco) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. amber must create an output factory containing files before they can be automatically consumed.

Generated by amber when --language and --browser are used

../test-output/factory
../test-output/factory/Chrome/fr-eu/plan
../test-output/factory/Chrome/fr-eu/plan/a-plan-name/a-plan-name.tex
../test-output/factory/Chrome/fr-eu/suite
../test-output/factory/Chrome/fr-eu/suite/a-suite-name/a-suite-name.tex
../test-output/factory/Chrome/fr-eu/case
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-status.tex
LaTeX test-results output
\tpoC{Chrome}{fr-eu}{factory/plan/a-plan-name/a-plan-name}
\tsoC{Chrome}{fr-eu}{factory/suite/a-suite-name/a-suite-nam}
\tcoC{Chrome}{fr-eu}{factory/case/t001/t001}
\tcoC{Chrome}{fr-eu}{factory/case/t002/t002}
\tcoC{Chrome}{fr-eu}{factory/case/t003/t003}
LaTeX macros

test plan output (tpoC), test suite output (tsoC), and test case output (tcoC) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. Amber must create an output factory containing files before they can be automatically consumed.

Console output

amber captures status, system out, and system error and records the results to the a-test-case.tex file.

Step files

amber records PASS or FAIL for each Test Step. The result is determined by the program that amber runs.

PNG files

Any custom program amber invokes can take a screen capture and record it as test-output/factory/case/a-test-case/a-test-case-001.png. Multiple PNG files are supported.

CSV files

Any custom program amber invokes can record CSV files as test-output/factory/case/a-test-case/a-test-case-001.csv. Multiple CSV files are supported.

amber command line

amber --help
Usage: amber [options]
Specific options:
-b, --browser BROWSER Select Browser
["None", "Chrome", "Edge", "Firefox", "IE",
"Opera"]
-n, --nodryrun No Dryrun
-e, --log-environment List environment
-f, --file x,y,x File name
-l, --language LANGUAGE Select language
["zz", "cs", "da", "de", "en", "es", "fr-ca",
"fr-eu", "it", "ne", "no", "pl", "ro", "sv"]
-v, --verbose Verbose
-L, --log-command Log Command
-r, --log-requirement Log Requirement
-S, --simulate Simulate run to create Test Output
directory.
-O, --obliterate Obliterate Test Output directory before Test
Execution.
-w, --writer WRITER Select writer
["Ascii", "LaTeX"]
-p, --plan x,y,x Plan name
-s, --suite x,y,x Suite name
-c, --case x,y,x Case name
-h, --help Show this message
--version Show version
-d, --dump Dump options (must be last).

General

--help

Show this message.

1.6.0.367 is the current version.

--verbose

Log the commands that will be run when --nodryrun is used. NOTE: This option was disabled because Amber writes the commands to the Test Output Factory. This occurs because Amber is capturing standard input, standard output, and standard error. Amber conditionally writes either standard output or standard error to the Test Output Factory based on the exit status of the program run.

Input Factory

--plan

A comma-separated list of test plan names amber is to process. The following directory and YAML file name convention is mandatory: factory/plan/a-plan/a-plan.yaml.

--suite

A comma-separated list of test suite names amber is to process. The following directory and YAML file name convention is mandatory: factory/suite/a-suite/a-suite.yaml.

--case

A comma-separated list of test case names amber is to process. The following directory and YAML file name convention is mandatory: factory/case/suite/a-case/a-case.yaml.

--file

A comma-separated list of file names amber is to process.

Substitution

--browser

amber uses Chrome by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that uses a Web test driver.

--language

amber uses English (en) by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that requires internationalization and localization.

Output Factory

--log-command

Amber recursively calls Amber. test-output/commands.log shows each Amber invocation.

--log-requirement

test-output/requirements.log is used to record each requirement and YAML file that references a requirement.

--nodryrun

By default, amber does not have side effects when run. You must explicitly use the --nodryrun option to cause side effects. The commands that would have been executed are echoed to system out.

--simulate

The simulate option is used to create a Test Output directory so that you can design your report. Each command defined in your Test Case YAML file is echoed to the Test Output directory Test Case file.

--obliterate

The Test Output directory is obliterated before running any Tests.

--environment

A list of environment variables amber records in the output factory. See environment.rb for a complete listing of files.

Add these functions to .bashrc

AMBERPATH=${HOME}/git/amber
export AMBERPATH
functionnewfactoryitem() {
${AMBERPATH}/bin/newfactoryitem $@
}
functioncheck-test-output() {
echo grep -rw --include=\*step*.* test-output/ -e $1
grep -rw --include=\*step*.* test-output/ -e $1
}
functionpass() {
check-test-output PASS
}
functionfail() {
check-test-output FAIL
}
functionrequirements() {
echo grep -rw --include=\*.yaml factory/ -e 'requirement:'
grep -rw --include=\*.yaml factory/ -e 'requirement:'
}

Amber demonstration

Amber has a Test Input Factory that is used to validate Amber. The following commands will demonstrate producing amber.pdf.

  1. -n, --nodryrun
  2. -e, --environment
  3. -L, --log-command
  4. -r, --log-requirement
  5. -O, --obliterate
  6. -p, --plan
cd git/amber/report
rake validate:amber

Amber demonstration output

  1. git/amber/report/test-output/commands.log
  2. git/amber/report/test-output/environment.tex
  3. git/amber/report/test-output/requirements.csv
  4. git/amber/report/test-output/test-results.tex
  5. git/amber/report/_build/amber.pdf

About

Automated command line testing.

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Automated testing

Amber is the automation driver used to coordinate product and tool validation. She runs command-line test steps, captures the evidence produced by those steps, and writes structured LaTeX fragments that autodoc can assemble into a validation report.

Amber is a complete product checkout when cloned under ~/soup/amber. She is self-validating: the same Amber workflow used by downstream products is used to exercise Amber's own command-line behavior and build her validation report. Amber borrows from a Ruby-on-Rails concept of convention over configuration. In this regard, Amber consumes YAML documents placed beneath a factory directory root and writes generated evidence beneath test-output.

Review Amber's report directory to see the automation and report-generation pattern used by the related ~/soup products. example.pdf has been provided to demonstrate the automation framework components amber, autodoc, docbld, and tlc-article.

TL;DR

Released version

1.6.4.415

Working with source

Copy the text below and paste into a shell.

git clone https://github.com/traap/amber.git

Build and install Amber

cd amber && rake build:amber

Validate Amber

cd amber && rake validate:amber

The validation task fails when required environment variables are missing, when Amber cannot generate her evidence, or when docbld cannot rebuild and deploy the report.

Supported Systems

amber is targeted to work seamlessly with Linux distributions.

Prerequisites

  1. Ruby
  2. Bundler
  3. Rake

Optional components are only needed if you want to validate Amber and

build Amber's documentation

  1. TexLive
  2. autodoc
  3. docbld
  4. tlc-article

Input Factory

A YAML Plan

plan:
name: A plan namepurpose: The purpose of this test plan.includes:
- suite:
- name: a-suite-name

A YAML Suite

suite:
name: A Suite Namepurpose: The purpose of this test suite.requirement: 1, 2, and 3.includes:
- case:
- name: a-test-case
- name: another-test-case
- name: yet-another-test-case

A YAML Case

case:
name: First Test Casepurpose: Demonstrate requirements are met.requirement: 1, 2, and 3steps:
- confirm: Program echo has been installed.expectation: echo installation location is displayed.sudo: truecommand: whichargument: echoevidence: Starts on next line.
- confirm: Program date has been installed.expectation: date installation location is displayed.sudo: falsecommand: whichargument: dateevidence: Starts on next line.
- confirm: Program man has been installed.expectation: man installation location is displayed.sudo: falsecommand: whichargument: manevidence: Starts on next line.

Amber directory convention

../factory
../factory/config
../factory/config/app_config.yaml
../factory
../factory/plan
../factory/plan/a-plan-name/a-plan-name.yaml
../factory/suite
../factory/suite/a-suite-name/a-suite-name.yaml
../factory/case
../factory/case/a-test-case/a-test-case.yaml
../factory/case/another-test-case/another-test-case.yaml
../factory/case/yet-another-test-case/yet-another-test-case.yaml

Output Factory

Generated by amber

../test-output/factory
../test-output/factory/plan
../test-output/factory/plan/a-plan-name/a-plan-name.tex
../test-output/factory/suite
../test-output/factory/suite/a-suite-name/a-suite-name.tex
../test-output/factory/case
../test-output/factory/case/a-test-case/a-test-case.tex
../test-output/factory/case/a-test-case/a-test-case-step-001.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-status.tex
LaTeX test-results output
\tpo{full/path/to/test-output/factory/plan/a-plan-name/a-plan-nam}
\tso{full/path/to/test-output/factory/suite/a-suite-name/a-suite-nam}
\tco{full/path/to/test-output/factory/case/t001/t001}
\tco{full/path/to/test-output/factory/case/t002/t002}
\tco{full/path/to/test-output/factory/case/t003/t003}
LaTeX macros

test plan output (tpo), test suite output (tso), and test case output (tco) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. amber must create an output factory containing files before they can be automatically consumed.

Generated by amber when --language and --browser are used

../test-output/factory
../test-output/factory/Chrome/fr-eu/plan
../test-output/factory/Chrome/fr-eu/plan/a-plan-name/a-plan-name.tex
../test-output/factory/Chrome/fr-eu/suite
../test-output/factory/Chrome/fr-eu/suite/a-suite-name/a-suite-name.tex
../test-output/factory/Chrome/fr-eu/case
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-status.tex
LaTeX test-results output
\tpoC{Chrome}{fr-eu}{factory/plan/a-plan-name/a-plan-name}
\tsoC{Chrome}{fr-eu}{factory/suite/a-suite-name/a-suite-nam}
\tcoC{Chrome}{fr-eu}{factory/case/t001/t001}
\tcoC{Chrome}{fr-eu}{factory/case/t002/t002}
\tcoC{Chrome}{fr-eu}{factory/case/t003/t003}
LaTeX macros

test plan output (tpoC), test suite output (tsoC), and test case output (tcoC) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. Amber must create an output factory containing files before they can be automatically consumed.

Console output

amber captures status, system out, and system error and records the results to the a-test-case.tex file.

Step files

amber records PASS or FAIL for each Test Step. The result is determined by the program that amber runs.

PNG files

Any custom program amber invokes can take a screen capture and record it as test-output/factory/case/a-test-case/a-test-case-001.png. Multiple PNG files are supported.

CSV files

Any custom program amber invokes can record CSV files as test-output/factory/case/a-test-case/a-test-case-001.csv. Multiple CSV files are supported.

amber command line

amber --help
Usage: amber [options]
Specific options:
-b, --browser BROWSER Select Browser
["None", "Chrome", "Edge", "Firefox", "IE",
"Opera"]
-n, --nodryrun No Dryrun
-e, --log-environment List environment
-f, --file x,y,x File name
-l, --language LANGUAGE Select language
["zz", "cs", "da", "de", "en", "es", "fr-ca",
"fr-eu", "it", "ne", "no", "pl", "ro", "sv"]
-v, --verbose Verbose
-L, --log-command Log Command
-r, --log-requirement Log Requirement
-S, --simulate Simulate run to create Test Output
directory.
-O, --obliterate Obliterate Test Output directory before Test
Execution.
-w, --writer WRITER Select writer
["Ascii", "LaTeX"]
-p, --plan x,y,x Plan name
-s, --suite x,y,x Suite name
-c, --case x,y,x Case name
-h, --help Show this message
--version Show version
-d, --dump Dump options (must be last).

General

--help

Show this message.

1.6.0.367 is the current version.

--verbose

Log the commands that will be run when --nodryrun is used. NOTE: This option was disabled because Amber writes the commands to the Test Output Factory. This occurs because Amber is capturing standard input, standard output, and standard error. Amber conditionally writes either standard output or standard error to the Test Output Factory based on the exit status of the program run.

Input Factory

--plan

A comma-separated list of test plan names amber is to process. The following directory and YAML file name convention is mandatory: factory/plan/a-plan/a-plan.yaml.

--suite

A comma-separated list of test suite names amber is to process. The following directory and YAML file name convention is mandatory: factory/suite/a-suite/a-suite.yaml.

--case

A comma-separated list of test case names amber is to process. The following directory and YAML file name convention is mandatory: factory/case/suite/a-case/a-case.yaml.

--file

A comma-separated list of file names amber is to process.

Substitution

--browser

amber uses Chrome by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that uses a Web test driver.

--language

amber uses English (en) by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that requires internationalization and localization.

Output Factory

--log-command

Amber recursively calls Amber. test-output/commands.log shows each Amber invocation.

--log-requirement

test-output/requirements.log is used to record each requirement and YAML file that references a requirement.

--nodryrun

By default, amber does not have side effects when run. You must explicitly use the --nodryrun option to cause side effects. The commands that would have been executed are echoed to system out.

--simulate

The simulate option is used to create a Test Output directory so that you can design your report. Each command defined in your Test Case YAML file is echoed to the Test Output directory Test Case file.

--obliterate

The Test Output directory is obliterated before running any Tests.

--environment

A list of environment variables amber records in the output factory. See environment.rb for a complete listing of files.

Add these functions to .bashrc

AMBERPATH=${HOME}/git/amber
export AMBERPATH
functionnewfactoryitem() {
${AMBERPATH}/bin/newfactoryitem $@
}
functioncheck-test-output() {
echo grep -rw --include=\*step*.* test-output/ -e $1
grep -rw --include=\*step*.* test-output/ -e $1
}
functionpass() {
check-test-output PASS
}
functionfail() {
check-test-output FAIL
}
functionrequirements() {
echo grep -rw --include=\*.yaml factory/ -e 'requirement:'
grep -rw --include=\*.yaml factory/ -e 'requirement:'
}

Amber demonstration

Amber has a Test Input Factory that is used to validate Amber. The following commands will demonstrate producing amber.pdf.

  1. -n, --nodryrun
  2. -e, --environment
  3. -L, --log-command
  4. -r, --log-requirement
  5. -O, --obliterate
  6. -p, --plan
cd git/amber/report
rake validate:amber

Amber demonstration output

  1. git/amber/report/test-output/commands.log
  2. git/amber/report/test-output/environment.tex
  3. git/amber/report/test-output/requirements.csv
  4. git/amber/report/test-output/test-results.tex
  5. git/amber/report/_build/amber.pdf

About

Automated command line testing.

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Automated testing

Amber is the automation driver used to coordinate product and tool validation. She runs command-line test steps, captures the evidence produced by those steps, and writes structured LaTeX fragments that autodoc can assemble into a validation report.

Amber is a complete product checkout when cloned under ~/soup/amber. She is self-validating: the same Amber workflow used by downstream products is used to exercise Amber's own command-line behavior and build her validation report. Amber borrows from a Ruby-on-Rails concept of convention over configuration. In this regard, Amber consumes YAML documents placed beneath a factory directory root and writes generated evidence beneath test-output.

Review Amber's report directory to see the automation and report-generation pattern used by the related ~/soup products. example.pdf has been provided to demonstrate the automation framework components amber, autodoc, docbld, and tlc-article.

TL;DR

Released version

1.6.4.415

Working with source

Copy the text below and paste into a shell.

git clone https://github.com/traap/amber.git

Build and install Amber

cd amber && rake build:amber

Validate Amber

cd amber && rake validate:amber

The validation task fails when required environment variables are missing, when Amber cannot generate her evidence, or when docbld cannot rebuild and deploy the report.

Supported Systems

amber is targeted to work seamlessly with Linux distributions.

Prerequisites

  1. Ruby
  2. Bundler
  3. Rake

Optional components are only needed if you want to validate Amber and

build Amber's documentation

  1. TexLive
  2. autodoc
  3. docbld
  4. tlc-article

Input Factory

A YAML Plan

plan:
name: A plan namepurpose: The purpose of this test plan.includes:
- suite:
- name: a-suite-name

A YAML Suite

suite:
name: A Suite Namepurpose: The purpose of this test suite.requirement: 1, 2, and 3.includes:
- case:
- name: a-test-case
- name: another-test-case
- name: yet-another-test-case

A YAML Case

case:
name: First Test Casepurpose: Demonstrate requirements are met.requirement: 1, 2, and 3steps:
- confirm: Program echo has been installed.expectation: echo installation location is displayed.sudo: truecommand: whichargument: echoevidence: Starts on next line.
- confirm: Program date has been installed.expectation: date installation location is displayed.sudo: falsecommand: whichargument: dateevidence: Starts on next line.
- confirm: Program man has been installed.expectation: man installation location is displayed.sudo: falsecommand: whichargument: manevidence: Starts on next line.

Amber directory convention

../factory
../factory/config
../factory/config/app_config.yaml
../factory
../factory/plan
../factory/plan/a-plan-name/a-plan-name.yaml
../factory/suite
../factory/suite/a-suite-name/a-suite-name.yaml
../factory/case
../factory/case/a-test-case/a-test-case.yaml
../factory/case/another-test-case/another-test-case.yaml
../factory/case/yet-another-test-case/yet-another-test-case.yaml

Output Factory

Generated by amber

../test-output/factory
../test-output/factory/plan
../test-output/factory/plan/a-plan-name/a-plan-name.tex
../test-output/factory/suite
../test-output/factory/suite/a-suite-name/a-suite-name.tex
../test-output/factory/case
../test-output/factory/case/a-test-case/a-test-case.tex
../test-output/factory/case/a-test-case/a-test-case-step-001.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-001-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-002-status.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-log.tex
../test-output/factory/case/a-test-case/a-test-case-step-step-003-status.tex
LaTeX test-results output
\tpo{full/path/to/test-output/factory/plan/a-plan-name/a-plan-nam}
\tso{full/path/to/test-output/factory/suite/a-suite-name/a-suite-nam}
\tco{full/path/to/test-output/factory/case/t001/t001}
\tco{full/path/to/test-output/factory/case/t002/t002}
\tco{full/path/to/test-output/factory/case/t003/t003}
LaTeX macros

test plan output (tpo), test suite output (tso), and test case output (tco) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. amber must create an output factory containing files before they can be automatically consumed.

Generated by amber when --language and --browser are used

../test-output/factory
../test-output/factory/Chrome/fr-eu/plan
../test-output/factory/Chrome/fr-eu/plan/a-plan-name/a-plan-name.tex
../test-output/factory/Chrome/fr-eu/suite
../test-output/factory/Chrome/fr-eu/suite/a-suite-name/a-suite-name.tex
../test-output/factory/Chrome/fr-eu/case
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-001-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-002-status.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-log.tex
../test-output/factory/Chrome/fr-eu/case/a-test-case/a-test-case-step-003-status.tex
LaTeX test-results output
\tpoC{Chrome}{fr-eu}{factory/plan/a-plan-name/a-plan-name}
\tsoC{Chrome}{fr-eu}{factory/suite/a-suite-name/a-suite-nam}
\tcoC{Chrome}{fr-eu}{factory/case/t001/t001}
\tcoC{Chrome}{fr-eu}{factory/case/t002/t002}
\tcoC{Chrome}{fr-eu}{factory/case/t003/t003}
LaTeX macros

test plan output (tpoC), test suite output (tsoC), and test case output (tcoC) are LaTeX macros autodoc uses to assemble output from amber into a report.

Refer to autodoc to learn how an external program interacts with amber. Amber must create an output factory containing files before they can be automatically consumed.

Console output

amber captures status, system out, and system error and records the results to the a-test-case.tex file.

Step files

amber records PASS or FAIL for each Test Step. The result is determined by the program that amber runs.

PNG files

Any custom program amber invokes can take a screen capture and record it as test-output/factory/case/a-test-case/a-test-case-001.png. Multiple PNG files are supported.

CSV files

Any custom program amber invokes can record CSV files as test-output/factory/case/a-test-case/a-test-case-001.csv. Multiple CSV files are supported.

amber command line

amber --help
Usage: amber [options]
Specific options:
-b, --browser BROWSER Select Browser
["None", "Chrome", "Edge", "Firefox", "IE",
"Opera"]
-n, --nodryrun No Dryrun
-e, --log-environment List environment
-f, --file x,y,x File name
-l, --language LANGUAGE Select language
["zz", "cs", "da", "de", "en", "es", "fr-ca",
"fr-eu", "it", "ne", "no", "pl", "ro", "sv"]
-v, --verbose Verbose
-L, --log-command Log Command
-r, --log-requirement Log Requirement
-S, --simulate Simulate run to create Test Output
directory.
-O, --obliterate Obliterate Test Output directory before Test
Execution.
-w, --writer WRITER Select writer
["Ascii", "LaTeX"]
-p, --plan x,y,x Plan name
-s, --suite x,y,x Suite name
-c, --case x,y,x Case name
-h, --help Show this message
--version Show version
-d, --dump Dump options (must be last).

General

--help

Show this message.

1.6.0.367 is the current version.

--verbose

Log the commands that will be run when --nodryrun is used. NOTE: This option was disabled because Amber writes the commands to the Test Output Factory. This occurs because Amber is capturing standard input, standard output, and standard error. Amber conditionally writes either standard output or standard error to the Test Output Factory based on the exit status of the program run.

Input Factory

--plan

A comma-separated list of test plan names amber is to process. The following directory and YAML file name convention is mandatory: factory/plan/a-plan/a-plan.yaml.

--suite

A comma-separated list of test suite names amber is to process. The following directory and YAML file name convention is mandatory: factory/suite/a-suite/a-suite.yaml.

--case

A comma-separated list of test case names amber is to process. The following directory and YAML file name convention is mandatory: factory/case/suite/a-case/a-case.yaml.

--file

A comma-separated list of file names amber is to process.

Substitution

--browser

amber uses Chrome by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that uses a Web test driver.

--language

amber uses English (en) by default. Your Test Plan, Test Suite, and Test Case must be written to reference a program that requires internationalization and localization.

Output Factory

--log-command

Amber recursively calls Amber. test-output/commands.log shows each Amber invocation.

--log-requirement

test-output/requirements.log is used to record each requirement and YAML file that references a requirement.

--nodryrun

By default, amber does not have side effects when run. You must explicitly use the --nodryrun option to cause side effects. The commands that would have been executed are echoed to system out.

--simulate

The simulate option is used to create a Test Output directory so that you can design your report. Each command defined in your Test Case YAML file is echoed to the Test Output directory Test Case file.

--obliterate

The Test Output directory is obliterated before running any Tests.

--environment

A list of environment variables amber records in the output factory. See environment.rb for a complete listing of files.

Add these functions to .bashrc

AMBERPATH=${HOME}/git/amber
export AMBERPATH
functionnewfactoryitem() {
${AMBERPATH}/bin/newfactoryitem $@
}
functioncheck-test-output() {
echo grep -rw --include=\*step*.* test-output/ -e $1
grep -rw --include=\*step*.* test-output/ -e $1
}
functionpass() {
check-test-output PASS
}
functionfail() {
check-test-output FAIL
}
functionrequirements() {
echo grep -rw --include=\*.yaml factory/ -e 'requirement:'
grep -rw --include=\*.yaml factory/ -e 'requirement:'
}

Amber demonstration

Amber has a Test Input Factory that is used to validate Amber. The following commands will demonstrate producing amber.pdf.

  1. -n, --nodryrun
  2. -e, --environment
  3. -L, --log-command
  4. -r, --log-requirement
  5. -O, --obliterate
  6. -p, --plan
cd git/amber/report
rake validate:amber

Amber demonstration output

  1. git/amber/report/test-output/commands.log
  2. git/amber/report/test-output/environment.tex
  3. git/amber/report/test-output/requirements.csv
  4. git/amber/report/test-output/test-results.tex
  5. git/amber/report/_build/amber.pdf

About

Automated command line testing.

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages