From 3cb0aad1b5ff3d841b0c88d2b5862adc7cf519ea Mon Sep 17 00:00:00 2001 From: Susan Gao Date: Mon, 21 Apr 2025 17:00:39 -0700 Subject: [PATCH 01/11] chore: nuts test --- test/commands/flow/run/test.nut.ts | 28 +++++----- .../flow-run-template/.forceignore | 16 ++++++ .../mock-projects/flow-run-template/README.md | 0 .../config/project-scratch-def.json | 5 ++ .../main/default/flows/FlowFromDevHub_1.flow | 51 +++++++++++++++++++ .../flowtests/FlowFromDevHub_1_test1.flowtest | 27 ++++++++++ .../flowtests/FlowFromDevHub_1_test2.flowtest | 27 ++++++++++ .../flowtests/FlowFromDevHub_1_test3.flowtest | 27 ++++++++++ .../flowtests/FlowFromDevHub_1_test4.flowtest | 27 ++++++++++ .../flow-run-template/sfdx-project.json | 12 +++++ 10 files changed, 205 insertions(+), 15 deletions(-) create mode 100644 test/mock-projects/flow-run-template/.forceignore create mode 100644 test/mock-projects/flow-run-template/README.md create mode 100644 test/mock-projects/flow-run-template/config/project-scratch-def.json create mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow create mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test1.flowtest create mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test2.flowtest create mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test3.flowtest create mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test4.flowtest create mode 100644 test/mock-projects/flow-run-template/sfdx-project.json diff --git a/test/commands/flow/run/test.nut.ts b/test/commands/flow/run/test.nut.ts index 75c253d..fe8b6fa 100644 --- a/test/commands/flow/run/test.nut.ts +++ b/test/commands/flow/run/test.nut.ts @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import path from 'node:path'; +import { join } from 'node:path'; import { execCmd, TestSession } from '@salesforce/cli-plugins-testkit'; -import { config } from 'chai'; +import { expect, config } from 'chai'; config.truncateThreshold = 0; @@ -23,23 +23,21 @@ describe('flow run test', () => { let session: TestSession; before(async () => { session = await TestSession.create({ - project: { - gitClone: 'https://github.com/trailheadapps/dreamhouse-lwc.git', - }, - devhubAuthStrategy: 'AUTO', - scratchOrgs: [ - { - config: path.join('config', 'project-scratch-def.json'), - setDefault: true, - alias: 'org', - }, - ], + devhubAuthStrategy: 'NONE', + project: { sourceDir: join('test', 'mock-projects', 'flow-run-template') }, }); - execCmd('project:deploy:start -o org --source-dir force-app', { ensureExitCode: 0, cli: 'sf' }); }); after(async () => { - await session?.zip(undefined, 'artifacts'); await session?.clean(); }); + + describe('--result-format', () => { + it('will print tap format', async () => { + const result = execCmd('flow:run:test', { ensureExitCode: 0 }).shellOutput.stdout; + expect(result).to.include('1..1'); + expect(result).to.include('ok 1'); + expect(result).to.include('--result-format " to retrieve test results in a different format.'); + }); + }); }); diff --git a/test/mock-projects/flow-run-template/.forceignore b/test/mock-projects/flow-run-template/.forceignore new file mode 100644 index 0000000..6115c14 --- /dev/null +++ b/test/mock-projects/flow-run-template/.forceignore @@ -0,0 +1,16 @@ +# List files or directories below to ignore them when running force:source:push, force:source:pull, and force:source:status + +# More information: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_exclude_source.htm + +# + +package.xml + +# LWC configuration files + +**/jsconfig.json +**/.eslintrc.json + +# LWC Jest + +**/**tests**/** diff --git a/test/mock-projects/flow-run-template/README.md b/test/mock-projects/flow-run-template/README.md new file mode 100644 index 0000000..e69de29 diff --git a/test/mock-projects/flow-run-template/config/project-scratch-def.json b/test/mock-projects/flow-run-template/config/project-scratch-def.json new file mode 100644 index 0000000..6b02a7d --- /dev/null +++ b/test/mock-projects/flow-run-template/config/project-scratch-def.json @@ -0,0 +1,5 @@ +{ + "orgName": "flowtest company", + "edition": "Developer", + "features": [] +} diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow b/test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow new file mode 100644 index 0000000..ff9bfe9 --- /dev/null +++ b/test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow @@ -0,0 +1,51 @@ + + + 64.0 + false + Default + FlowFromDevHub {!$Flow.CurrentDateTime} + + + BuilderType + + LightningFlowBuilder + + + + CanvasMode + + AUTO_LAYOUT_CANVAS + + + + OriginBuilderType + + LightningFlowBuilder + + + AutoLaunchedFlow + + updateAccount + + 0 + 0 + + Description + + Test + + + $Record + + + 0 + 0 + + updateAccount + + Account + Create + RecordAfterSave + + Draft + diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test1.flowtest b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test1.flowtest new file mode 100644 index 0000000..5e1ec4f --- /dev/null +++ b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test1.flowtest @@ -0,0 +1,27 @@ + + + FlowFromDevHub_1 + + + Start + + $Record + InputTriggeringRecordInitial + + {"Name":"FlowTestAccount1","OwnerId":"005xx000001X80LAAS"} + + + + + + + updateAccount + HasError + + false + + + + Finish + + diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test2.flowtest b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test2.flowtest new file mode 100644 index 0000000..21ebca2 --- /dev/null +++ b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test2.flowtest @@ -0,0 +1,27 @@ + + + FlowFromDevHub_1 + + + Start + + $Record + InputTriggeringRecordInitial + + {"Name":"FlowTestAccount1","OwnerId":"005xx000001X80LAAS"} + + + + + + + updateAccount + WasVisited + + false + + + + Finish + + \ No newline at end of file diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test3.flowtest b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test3.flowtest new file mode 100644 index 0000000..092c052 --- /dev/null +++ b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test3.flowtest @@ -0,0 +1,27 @@ + + + FlowFromDevHub_1 + + + Start + + $Record + InputTriggeringRecordInitial + + {"Name":"FlowTestAccount1","OwnerId":"005xx000001X80LAAS"} + + + + + + + updateAccount + EqualTo + + false + + + + Finish + + \ No newline at end of file diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test4.flowtest b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test4.flowtest new file mode 100644 index 0000000..f4edae1 --- /dev/null +++ b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test4.flowtest @@ -0,0 +1,27 @@ + + + FlowFromDevHub_1 + + + Start + + $Record + InputTriggeringRecordInitial + + {"Name":"FlowTestAccount1","OwnerId":"005xx000001X80LAAS"} + + + + + + + $Record.Description + EqualTo + + Test + + + + Finish + + \ No newline at end of file diff --git a/test/mock-projects/flow-run-template/sfdx-project.json b/test/mock-projects/flow-run-template/sfdx-project.json new file mode 100644 index 0000000..4c25204 --- /dev/null +++ b/test/mock-projects/flow-run-template/sfdx-project.json @@ -0,0 +1,12 @@ +{ + "packageDirectories": [ + { + "path": "force-app", + "default": true + } + ], + "name": "flow-run-template", + "namespace": "", + "sfdcLoginUrl": "https://login.salesforce.com", + "sourceApiVersion": "64.0" +} From 7eca30e20f67daad93a4f94b661083a0b0eb3729 Mon Sep 17 00:00:00 2001 From: Susan Gao Date: Mon, 21 Apr 2025 17:09:08 -0700 Subject: [PATCH 02/11] chore: nuts test --- test/commands/flow/run/test.nut.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/test/commands/flow/run/test.nut.ts b/test/commands/flow/run/test.nut.ts index fe8b6fa..3c21707 100644 --- a/test/commands/flow/run/test.nut.ts +++ b/test/commands/flow/run/test.nut.ts @@ -23,9 +23,18 @@ describe('flow run test', () => { let session: TestSession; before(async () => { session = await TestSession.create({ - devhubAuthStrategy: 'NONE', project: { sourceDir: join('test', 'mock-projects', 'flow-run-template') }, + devhubAuthStrategy: 'AUTO', + scratchOrgs: [ + { + config: join('config', 'project-scratch-def.json'), + setDefault: true, + alias: 'org', + }, + ], }); + + execCmd('project:deploy:start -o org --source-dir force-app', { ensureExitCode: 0, cli: 'sf' }); }); after(async () => { From c9f0478015747c5964d03d1f90c16353f76daaaa Mon Sep 17 00:00:00 2001 From: Susan Gao Date: Mon, 21 Apr 2025 20:17:47 -0700 Subject: [PATCH 03/11] chore: retrigger nut test --- test/commands/flow/run/test.nut.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/test/commands/flow/run/test.nut.ts b/test/commands/flow/run/test.nut.ts index 3c21707..c092a32 100644 --- a/test/commands/flow/run/test.nut.ts +++ b/test/commands/flow/run/test.nut.ts @@ -16,7 +16,6 @@ import { join } from 'node:path'; import { execCmd, TestSession } from '@salesforce/cli-plugins-testkit'; import { expect, config } from 'chai'; - config.truncateThreshold = 0; describe('flow run test', () => { From 3fd106dab0f45680ff34bf593c8f9d6c76bd5982 Mon Sep 17 00:00:00 2001 From: Susan Gao Date: Tue, 22 Apr 2025 10:47:46 -0700 Subject: [PATCH 04/11] chore: nut test --- .../flows/FlowFromDevHub_1.flow-meta.xml | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow-meta.xml diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow-meta.xml b/test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow-meta.xml new file mode 100644 index 0000000..ff9bfe9 --- /dev/null +++ b/test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow-meta.xml @@ -0,0 +1,51 @@ + + + 64.0 + false + Default + FlowFromDevHub {!$Flow.CurrentDateTime} + + + BuilderType + + LightningFlowBuilder + + + + CanvasMode + + AUTO_LAYOUT_CANVAS + + + + OriginBuilderType + + LightningFlowBuilder + + + AutoLaunchedFlow + + updateAccount + + 0 + 0 + + Description + + Test + + + $Record + + + 0 + 0 + + updateAccount + + Account + Create + RecordAfterSave + + Draft + From ee8ba3454183ae9902bc9dcc57f602e9c2eb2013 Mon Sep 17 00:00:00 2001 From: Eric Willhoit Date: Tue, 22 Apr 2025 17:58:44 -0500 Subject: [PATCH 05/11] fix: forceignore in nuts --- messages/flow.run.test.md | 4 +- test/commands/flow/run/test.nut.ts | 4 +- .../flow-run-template/.forceignore | 2 +- .../main/default/flows/FlowFromDevHub_1.flow | 51 ------------------- 4 files changed, 5 insertions(+), 56 deletions(-) delete mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow diff --git a/messages/flow.run.test.md b/messages/flow.run.test.md index 3890ad6..59a8dae 100644 --- a/messages/flow.run.test.md +++ b/messages/flow.run.test.md @@ -8,7 +8,7 @@ Specify which tests to run by using the --class-names flag followed by the names To see code coverage results, use the --code-coverage flag with --result-format. The output displays a high-level summary of the test run and the code coverage values for classes in your org. If you specify human-readable result format, use the --detailed-coverage flag to see detailed coverage results for each test method run. -By default, "flow run test" runs asynchronously and immediately returns a test run ID. If you use the -–synchronous flag, you can use the --wait flag to specify the number of minutes to wait; if the tests finish in that timeframe, the command displays the results. If the tests haven't finished by the end of the wait time, the command displays a test run ID. Use the "flow get test --test-run-id" command to get the results. +By default, "flow run test" runs asynchronously and immediately returns a test run ID. If you use the --synchronous flag, you can use the --wait flag to specify the number of minutes to wait; if the tests finish in that timeframe, the command displays the results. If the tests haven't finished by the end of the wait time, the command displays a test run ID. Use the "flow get test --test-run-id" command to get the results. You must have the "View All Data" org system permission to use this command. The permission is disabled by default and can be enabled only by a system administrator. @@ -24,7 +24,7 @@ You must have the "View All Data" org system permission to use this command. The <%= config.bin %> <%= command.id %> --tests Flow1.Test1 --tests Flow2.Test2 --test-level RunSpecifiedTests - Run all tests synchronously in your default org; the command waits to display the test results until all tests finish: - <%= config.bin %> <%= command.id %> –synchronous + <%= config.bin %> <%= command.id %> --synchronous - Run all local tests in the org with the username “me@my.org”; save the output to the specified directory: <%= config.bin %> <%= command.id %> --test-level RunLocalTests --output-dir /Users/susan/temp/cliOutput --target-org me@my.org diff --git a/test/commands/flow/run/test.nut.ts b/test/commands/flow/run/test.nut.ts index c092a32..171f587 100644 --- a/test/commands/flow/run/test.nut.ts +++ b/test/commands/flow/run/test.nut.ts @@ -33,7 +33,7 @@ describe('flow run test', () => { ], }); - execCmd('project:deploy:start -o org --source-dir force-app', { ensureExitCode: 0, cli: 'sf' }); + execCmd('project deploy start -o org --source-dir force-app', { ensureExitCode: 0, cli: 'sf' }); }); after(async () => { @@ -42,7 +42,7 @@ describe('flow run test', () => { describe('--result-format', () => { it('will print tap format', async () => { - const result = execCmd('flow:run:test', { ensureExitCode: 0 }).shellOutput.stdout; + const result = execCmd('flow run test --synchronous', { ensureExitCode: 0 }).shellOutput.stdout; expect(result).to.include('1..1'); expect(result).to.include('ok 1'); expect(result).to.include('--result-format " to retrieve test results in a different format.'); diff --git a/test/mock-projects/flow-run-template/.forceignore b/test/mock-projects/flow-run-template/.forceignore index 6115c14..67a140a 100644 --- a/test/mock-projects/flow-run-template/.forceignore +++ b/test/mock-projects/flow-run-template/.forceignore @@ -13,4 +13,4 @@ package.xml # LWC Jest -**/**tests**/** +**/__tests__/** diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow b/test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow deleted file mode 100644 index ff9bfe9..0000000 --- a/test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow +++ /dev/null @@ -1,51 +0,0 @@ - - - 64.0 - false - Default - FlowFromDevHub {!$Flow.CurrentDateTime} - - - BuilderType - - LightningFlowBuilder - - - - CanvasMode - - AUTO_LAYOUT_CANVAS - - - - OriginBuilderType - - LightningFlowBuilder - - - AutoLaunchedFlow - - updateAccount - - 0 - 0 - - Description - - Test - - - $Record - - - 0 - 0 - - updateAccount - - Account - Create - RecordAfterSave - - Draft - From 3bbe0f62699dc6be4783ea17eff3520a8c716fdc Mon Sep 17 00:00:00 2001 From: Susan Gao Date: Tue, 22 Apr 2025 18:03:37 -0700 Subject: [PATCH 06/11] chore: nut test --- messages/flags.md | 4 ++ src/commands/flow/run/test.ts | 2 + src/flags.ts | 7 +++ test/commands/flow/run/test.nut.ts | 4 +- ...ub_1.flow-meta.xml => Flow1.flow-meta.xml} | 6 +-- .../main/default/flows/Flow2.flow-meta.xml | 51 +++++++++++++++++++ ...b_1_test1.flowtest => Flow1_test.flowtest} | 6 +-- ..._1_test2.flowtest => Flow2_test1.flowtest} | 12 ++--- .../flowtests/FlowFromDevHub_1_test3.flowtest | 27 ---------- .../flowtests/FlowFromDevHub_1_test4.flowtest | 27 ---------- 10 files changed, 79 insertions(+), 67 deletions(-) rename test/mock-projects/flow-run-template/force-app/main/default/flows/{FlowFromDevHub_1.flow-meta.xml => Flow1.flow-meta.xml} (91%) create mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml rename test/mock-projects/flow-run-template/force-app/main/default/flowtests/{FlowFromDevHub_1_test1.flowtest => Flow1_test.flowtest} (86%) rename test/mock-projects/flow-run-template/force-app/main/default/flowtests/{FlowFromDevHub_1_test2.flowtest => Flow2_test1.flowtest} (73%) delete mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test3.flowtest delete mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test4.flowtest diff --git a/messages/flags.md b/messages/flags.md index 88377ee..3d865b0 100644 --- a/messages/flags.md +++ b/messages/flags.md @@ -69,3 +69,7 @@ ID of the test run. # flags.detailed-coverage.summary Not available for flow tests. + +# flags.wait.summary + +Sets the streaming client socket timeout in minutes; specify a longer wait time if timeouts occur frequently. diff --git a/src/commands/flow/run/test.ts b/src/commands/flow/run/test.ts index 4f1fcef..c7470e3 100644 --- a/src/commands/flow/run/test.ts +++ b/src/commands/flow/run/test.ts @@ -29,6 +29,7 @@ import { classNamesFlag, suiteNamesFlag, testsFlag, + waitFlag, } from '../../../flags.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); @@ -53,6 +54,7 @@ export default class FlowRunTest extends SfCommand { 'class-names': classNamesFlag, 'suite-names': suiteNamesFlag, tests: testsFlag, + wait: waitFlag, }; protected cancellationTokenSource = new CancellationTokenSource(); diff --git a/src/flags.ts b/src/flags.ts index d385858..90c74a4 100644 --- a/src/flags.ts +++ b/src/flags.ts @@ -110,3 +110,10 @@ export const detailedCoverageSummaryFlag = Flags.boolean({ summary: messages.getMessage('flags.detailed-coverage.summary'), dependsOn: ['code-coverage'], }); + +export const waitFlag = Flags.duration({ + unit: 'minutes', + char: 'w', + summary: messages.getMessage('flags.wait.summary'), + min: 0, +}); diff --git a/test/commands/flow/run/test.nut.ts b/test/commands/flow/run/test.nut.ts index 171f587..2e27e9d 100644 --- a/test/commands/flow/run/test.nut.ts +++ b/test/commands/flow/run/test.nut.ts @@ -42,7 +42,9 @@ describe('flow run test', () => { describe('--result-format', () => { it('will print tap format', async () => { - const result = execCmd('flow run test --synchronous', { ensureExitCode: 0 }).shellOutput.stdout; + const result = execCmd('flow run test', { ensureExitCode: 0 }).shellOutput.stdout; + // eslint-disable-next-line no-console + console.log(result); expect(result).to.include('1..1'); expect(result).to.include('ok 1'); expect(result).to.include('--result-format " to retrieve test results in a different format.'); diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow-meta.xml b/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow1.flow-meta.xml similarity index 91% rename from test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow-meta.xml rename to test/mock-projects/flow-run-template/force-app/main/default/flows/Flow1.flow-meta.xml index ff9bfe9..aca5e46 100644 --- a/test/mock-projects/flow-run-template/force-app/main/default/flows/FlowFromDevHub_1.flow-meta.xml +++ b/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow1.flow-meta.xml @@ -1,10 +1,10 @@ - 64.0 + 65.0 false Default - FlowFromDevHub {!$Flow.CurrentDateTime} - + Flow1 {!$Flow.CurrentDateTime} + BuilderType diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml b/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml new file mode 100644 index 0000000..6a20c24 --- /dev/null +++ b/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml @@ -0,0 +1,51 @@ + + + 65.0 + false + Default + Flow2 {!$Flow.CurrentDateTime} + + + BuilderType + + LightningFlowBuilder + + + + CanvasMode + + AUTO_LAYOUT_CANVAS + + + + OriginBuilderType + + LightningFlowBuilder + + + AutoLaunchedFlow + + updateaccount + + 0 + 0 + + Description + + test + + + $Record + + + 0 + 0 + + updateaccount + + Account + Create + RecordAfterSave + + Draft + diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test1.flowtest b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/Flow1_test.flowtest similarity index 86% rename from test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test1.flowtest rename to test/mock-projects/flow-run-template/force-app/main/default/flowtests/Flow1_test.flowtest index 5e1ec4f..ef90396 100644 --- a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test1.flowtest +++ b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/Flow1_test.flowtest @@ -1,14 +1,14 @@ - FlowFromDevHub_1 - + Flow1 + Start $Record InputTriggeringRecordInitial - {"Name":"FlowTestAccount1","OwnerId":"005xx000001X80LAAS"} + {"Name":"FlowTestAccount1","OwnerId":"005xx000001X7qfAAC"} diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test2.flowtest b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/Flow2_test1.flowtest similarity index 73% rename from test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test2.flowtest rename to test/mock-projects/flow-run-template/force-app/main/default/flowtests/Flow2_test1.flowtest index 21ebca2..33f9dfe 100644 --- a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test2.flowtest +++ b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/Flow2_test1.flowtest @@ -1,27 +1,27 @@ - FlowFromDevHub_1 - + Flow2 + Start $Record InputTriggeringRecordInitial - {"Name":"FlowTestAccount1","OwnerId":"005xx000001X80LAAS"} + {"Name":"FlowTestAccount1","OwnerId":"005xx000001X7qfAAC"} - updateAccount + updateaccount WasVisited - false + true Finish - \ No newline at end of file + diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test3.flowtest b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test3.flowtest deleted file mode 100644 index 092c052..0000000 --- a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test3.flowtest +++ /dev/null @@ -1,27 +0,0 @@ - - - FlowFromDevHub_1 - - - Start - - $Record - InputTriggeringRecordInitial - - {"Name":"FlowTestAccount1","OwnerId":"005xx000001X80LAAS"} - - - - - - - updateAccount - EqualTo - - false - - - - Finish - - \ No newline at end of file diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test4.flowtest b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test4.flowtest deleted file mode 100644 index f4edae1..0000000 --- a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/FlowFromDevHub_1_test4.flowtest +++ /dev/null @@ -1,27 +0,0 @@ - - - FlowFromDevHub_1 - - - Start - - $Record - InputTriggeringRecordInitial - - {"Name":"FlowTestAccount1","OwnerId":"005xx000001X80LAAS"} - - - - - - - $Record.Description - EqualTo - - Test - - - - Finish - - \ No newline at end of file From 31a69e6fb54a870d187d55b4cb9de266a1e8d04a Mon Sep 17 00:00:00 2001 From: Susan Gao Date: Tue, 22 Apr 2025 18:12:51 -0700 Subject: [PATCH 07/11] chore: nut test --- .../force-app/main/default/flows/Flow1.flow-meta.xml | 2 +- .../force-app/main/default/flows/Flow2.flow-meta.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow1.flow-meta.xml b/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow1.flow-meta.xml index aca5e46..d7821db 100644 --- a/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow1.flow-meta.xml +++ b/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow1.flow-meta.xml @@ -1,6 +1,6 @@ - 65.0 + 64.0 false Default Flow1 {!$Flow.CurrentDateTime} diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml b/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml index 6a20c24..fae3cfc 100644 --- a/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml +++ b/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml @@ -1,6 +1,6 @@ - 65.0 + 64.0 false Default Flow2 {!$Flow.CurrentDateTime} From 1e99e199e71afa8c0789b52a00a30ab3842a4448 Mon Sep 17 00:00:00 2001 From: Susan Gao Date: Tue, 22 Apr 2025 19:04:37 -0700 Subject: [PATCH 08/11] chore: nut test --- test/commands/flow/run/test.nut.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/commands/flow/run/test.nut.ts b/test/commands/flow/run/test.nut.ts index 2e27e9d..0db21d8 100644 --- a/test/commands/flow/run/test.nut.ts +++ b/test/commands/flow/run/test.nut.ts @@ -42,7 +42,7 @@ describe('flow run test', () => { describe('--result-format', () => { it('will print tap format', async () => { - const result = execCmd('flow run test', { ensureExitCode: 0 }).shellOutput.stdout; + const result = execCmd('flow run test --synchronous', { ensureExitCode: 0 }).shellOutput.stdout; // eslint-disable-next-line no-console console.log(result); expect(result).to.include('1..1'); From 8259e8a64a5be3e6cb443a8d881a0005d7f85ebc Mon Sep 17 00:00:00 2001 From: Susan Gao Date: Tue, 22 Apr 2025 19:15:17 -0700 Subject: [PATCH 09/11] chore: nuts test --- test/commands/flow/run/test.nut.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/commands/flow/run/test.nut.ts b/test/commands/flow/run/test.nut.ts index 0db21d8..25f4d13 100644 --- a/test/commands/flow/run/test.nut.ts +++ b/test/commands/flow/run/test.nut.ts @@ -42,9 +42,7 @@ describe('flow run test', () => { describe('--result-format', () => { it('will print tap format', async () => { - const result = execCmd('flow run test --synchronous', { ensureExitCode: 0 }).shellOutput.stdout; - // eslint-disable-next-line no-console - console.log(result); + const result = execCmd('flow run test --result-format tap --wait 400', { ensureExitCode: 0 }).shellOutput.stdout; expect(result).to.include('1..1'); expect(result).to.include('ok 1'); expect(result).to.include('--result-format " to retrieve test results in a different format.'); From ce9617a562df23b7628889c8244caf9cacdd15a8 Mon Sep 17 00:00:00 2001 From: Susan Gao Date: Tue, 22 Apr 2025 19:34:04 -0700 Subject: [PATCH 10/11] chore: nuts test --- .../main/default/flows/Flow2.flow-meta.xml | 51 ------------------- .../default/flowtests/Flow2_test1.flowtest | 27 ---------- 2 files changed, 78 deletions(-) delete mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml delete mode 100644 test/mock-projects/flow-run-template/force-app/main/default/flowtests/Flow2_test1.flowtest diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml b/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml deleted file mode 100644 index fae3cfc..0000000 --- a/test/mock-projects/flow-run-template/force-app/main/default/flows/Flow2.flow-meta.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - 64.0 - false - Default - Flow2 {!$Flow.CurrentDateTime} - - - BuilderType - - LightningFlowBuilder - - - - CanvasMode - - AUTO_LAYOUT_CANVAS - - - - OriginBuilderType - - LightningFlowBuilder - - - AutoLaunchedFlow - - updateaccount - - 0 - 0 - - Description - - test - - - $Record - - - 0 - 0 - - updateaccount - - Account - Create - RecordAfterSave - - Draft - diff --git a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/Flow2_test1.flowtest b/test/mock-projects/flow-run-template/force-app/main/default/flowtests/Flow2_test1.flowtest deleted file mode 100644 index 33f9dfe..0000000 --- a/test/mock-projects/flow-run-template/force-app/main/default/flowtests/Flow2_test1.flowtest +++ /dev/null @@ -1,27 +0,0 @@ - - - Flow2 - - - Start - - $Record - InputTriggeringRecordInitial - - {"Name":"FlowTestAccount1","OwnerId":"005xx000001X7qfAAC"} - - - - - - - updateaccount - WasVisited - - true - - - - Finish - - From 95e0f1e667ecc369dc0971f46fd8fd5bab9956dc Mon Sep 17 00:00:00 2001 From: Susan Gao Date: Tue, 22 Apr 2025 19:55:03 -0700 Subject: [PATCH 11/11] chore: nuts test --- test/commands/flow/run/test.nut.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/commands/flow/run/test.nut.ts b/test/commands/flow/run/test.nut.ts index 25f4d13..316b6dd 100644 --- a/test/commands/flow/run/test.nut.ts +++ b/test/commands/flow/run/test.nut.ts @@ -14,6 +14,7 @@ * limitations under the License. */ import { join } from 'node:path'; +import fs from 'node:fs'; import { execCmd, TestSession } from '@salesforce/cli-plugins-testkit'; import { expect, config } from 'chai'; config.truncateThreshold = 0; @@ -48,4 +49,16 @@ describe('flow run test', () => { expect(result).to.include('--result-format " to retrieve test results in a different format.'); }); }); + + it('will create --output-dir', () => { + const result = execCmd('flow run test --output-dir testresults --code-coverage --wait 100', { ensureExitCode: 0 }) + .shellOutput.stdout; + expect(result).to.include('Test result files written to testresults'); + const outputDir = join(session.project.dir, 'testresults'); + expect(fs.statSync(outputDir).isDirectory()).to.be.true; + expect(fs.readdirSync(outputDir).length).to.equal(6); + expect(fs.existsSync(join(outputDir, 'test-result-codecoverage.json'))).to.be.true; + expect(fs.existsSync(join(outputDir, 'test-result.txt'))).to.be.true; + expect(fs.existsSync(join(outputDir, 'test-run-id.txt'))).to.be.true; + }); });