/sfdx-runtimes-exporter

SFDX plugin to keep track of tests running times during deployments

Primary LanguageTypeScript

sfdx-test-performance

Keep track of tests running times during your deployments.

Version CircleCI Appveyor CI Greenkeeper Known Vulnerabilities Downloads/week License

$ npm install -g sfdx-runtimes-exporter
$ sfdx COMMAND
running command...
$ sfdx (-v|--version|version)
sfdx-runtimes-exporter/0.0.1 win32-x64 node-v17.7.1
$ sfdx --help [COMMAND]
USAGE
  $ sfdx COMMAND
...
$ npm install -g sfdx-runtimes-exporter
$ sfdx COMMAND
running command...
$ sfdx (-v|--version|version)
sfdx-runtimes-exporter/0.0.1 win32-x64 node-v17.7.1
$ sfdx --help [COMMAND]
USAGE
  $ sfdx COMMAND
...

sfdx list [-b <datetime>] [-a <datetime>] [-l] [-m <integer>] [-o csv|json|S3|dynamoDB] [-d <string>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

Retrieve IDs of successful deployments with tests within a given time range

USAGE
  $ sfdx list [-b <datetime>] [-a <datetime>] [-l] [-m <integer>] [-o csv|json|S3|dynamoDB] [-d <string>] [-u <string>] 
  [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

OPTIONS
  -a, --after=after                                                                 date time after which the
                                                                                    deployments should be retrieved

  -b, --before=before                                                               date time before which the
                                                                                    deployments should be retrieved

  -d, --target=target                                                               target location to save the results
                                                                                    (do not include the file name)

  -l, --latest                                                                      retrieve only the latest deployments
                                                                                    (provide the "max" flag to retrieve
                                                                                    more than one)

  -m, --max=max                                                                     [default: 10] maximum number of
                                                                                    deployments to be retrieved

  -o, --output=(csv|json|S3|dynamoDB)                                               [default: json] where do you want to
                                                                                    output the results

  -u, --targetusername=targetusername                                               username or alias for the target
                                                                                    org; overrides default target org

  --apiversion=apiversion                                                           override the api version used for
                                                                                    api requests made by this command

  --json                                                                            format output as json

  --loglevel=(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)  [default: warn] logging level for
                                                                                    this command invocation

EXAMPLES
  sfdx list --targetusername myOrg@example.com --before "01/02/2000 01:02:34" --max=5 --output=csv --target=myFolder
  sfdx list --targetusername myOrg@example.com --after "01/02/2000 01:02:34"  --output=csv --target=myFolder
  sfdx list --targetusername myOrg@example.com --latest --max=5 --output=csv --target=myFolder

See code: src/commands/list.ts

sfdx runtimes -i <id> [-o csv|json|S3|dynamoDB] [-d <string>] [-t <integer>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

Retrieve tests execution time for a given deployment

USAGE
  $ sfdx runtimes -i <id> [-o csv|json|S3|dynamoDB] [-d <string>] [-t <integer>] [-u <string>] [--apiversion <string>] 
  [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

OPTIONS
  -d, --target=target                                                               target location to save the results
                                                                                    (do not include the file name)

  -i, --deployment=deployment                                                       (required) id of the deployment to
                                                                                    get tests execution time for

  -o, --output=(csv|json|S3|dynamoDB)                                               [default: json] where do you want to
                                                                                    output the results

  -t, --threshold=threshold                                                         return the tests execution time to
                                                                                    only those above the threshold (in
                                                                                    milliseconds)

  -u, --targetusername=targetusername                                               username or alias for the target
                                                                                    org; overrides default target org

  --apiversion=apiversion                                                           override the api version used for
                                                                                    api requests made by this command

  --json                                                                            format output as json

  --loglevel=(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)  [default: warn] logging level for
                                                                                    this command invocation

EXAMPLES
  sfdx runtimes --targetusername myOrg@example.com --deployment deploymentId --output=s3 --target=s3://myBucket/myFolder
  sfdx runtimes --targetusername myOrg@example.com --deployment deploymentId --output=csv --target=myFolder
  sfdx runtimes --targetusername myOrg@example.com --deployment deploymentId --output=dynamoDB --target=myTable
  sfdx runtimes --targetusername myOrg@example.com --deployment deploymentId --output=json --target=myFolder 
  --threshold=10000

See code: src/commands/runtimes.ts

sfdx runtimes:tests -i <id> [-o csv|json|S3|dynamoDB] [-d <string>] [-t <string>] [-u <string>] [--apiversion <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

Retrieve tests execution time for a given deployment

USAGE
  $ sfdx runtimes:tests -i <id> [-o csv|json|S3|dynamoDB] [-d <string>] [-t <string>] [-u <string>] [--apiversion 
  <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]

OPTIONS
  -d, --target=target                                                               target location to save the results
                                                                                    (do not include the file name)

  -i, --deployment=deployment                                                       (required) id of the deployment to
                                                                                    get tests execution time for

  -o, --output=(csv|json|S3|dynamoDB)                                               [default: json] where do you want to
                                                                                    output the results

  -t, --threshold=threshold                                                         return the tests execution time to
                                                                                    only those above the threshold (in
                                                                                    milliseconds)

  -u, --targetusername=targetusername                                               username or alias for the target
                                                                                    org; overrides default target org

  --apiversion=apiversion                                                           override the api version used for
                                                                                    api requests made by this command

  --json                                                                            format output as json

  --loglevel=(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)  [default: warn] logging level for
                                                                                    this command invocation

EXAMPLES
  sfdx per:tst --deployment deploymentId --targetusername myOrg@example.com --output=s3 --target=s3://myBucket/myFolder
  sfdx per:tst --deployment deploymentId --targetusername myOrg@example.com --output=csv --target=myFile.csv
  sfdx per:tst --deployment deploymentId --targetusername myOrg@example.com --output=dynamoDB --target=myTable
  sfdx per:tst --deployment deploymentId --targetusername myOrg@example.com --output=json --target=myFile.json 
  --threshold=10000

See code: src/commands/runtimes/tests.ts

Debugging your plugin

We recommend using the Visual Studio Code (VS Code) IDE for your plugin development. Included in the .vscode directory of this plugin is a launch.json config file, which allows you to attach a debugger to the node process when running your commands.

To debug the hello:org command:

  1. Start the inspector

If you linked your plugin to the sfdx cli, call your command with the dev-suspend switch:

$ sfdx hello:org -u myOrg@example.com --dev-suspend

Alternatively, to call your command using the bin/run script, set the NODE_OPTIONS environment variable to --inspect-brk when starting the debugger:

$ NODE_OPTIONS=--inspect-brk bin/run hello:org -u myOrg@example.com
  1. Set some breakpoints in your command code
  2. Click on the Debug icon in the Activity Bar on the side of VS Code to open up the Debug view.
  3. In the upper left hand corner of VS Code, verify that the "Attach to Remote" launch configuration has been chosen.
  4. Hit the green play button to the left of the "Attach to Remote" launch configuration window. The debugger should now be suspended on the first line of the program.
  5. Hit the green play button at the top middle of VS Code (this play button will be to the right of the play button that you clicked in step #5).

    Congrats, you are debugging!