Skip to content
This repository was archived by the owner on Jul 10, 2026. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
68c174d
fixed 2_0 waits
robmoffat Sep 25, 2023
2e42c64
Fixed app channel message ordering problem
robmoffat Oct 24, 2023
960f945
Introducing Kris' fix
robmoffat Oct 26, 2023
884b961
Completed Kris' fix
robmoffat Oct 26, 2023
1cf91c8
Close fix
robmoffat Oct 26, 2023
3f07d66
Fixed remaining races
robmoffat Oct 26, 2023
3a72775
Rewrote the window closing promises
robmoffat Oct 27, 2023
e0110c0
Waiting for 2 closes from findInstances
robmoffat Oct 29, 2023
ab770ec
Upped window close timeout
robmoffat Oct 29, 2023
7758071
Fixed Gagan's compile issue
robmoffat Oct 31, 2023
1ec9ef4
Using web client
robmoffat May 16, 2024
98cbe21
Merged main
robmoffat May 16, 2024
c63155a
Fixed display names
robmoffat May 16, 2024
36abf6c
Re-applied promise handling in raise intent from main
robmoffat May 16, 2024
e0437ab
Await / promises fixing
robmoffat May 16, 2024
9132ad1
Tidying up
robmoffat Jun 3, 2024
4f1b11a
Merging with head
robmoffat Jun 3, 2024
e815b60
Replacing original method of receiveContextStreamFromMockApp
robmoffat Jun 3, 2024
4433915
FDC3 On The Web Conformance Complete
robmoffat Jun 10, 2024
93c6bc3
Testing idea for next generation of the conformance framework
robmoffat Jul 9, 2024
daeb2bf
Work in progress
robmoffat Sep 13, 2024
6580ed3
Updated to new FDC3 for Web
robmoffat Sep 16, 2024
aa508c3
Fixed issue with getAppMetadata where it was expecting a window to be…
robmoffat Sep 19, 2024
dab5d1b
added wait to avoid race condition
robmoffat Sep 19, 2024
083ba2d
Merge branch 'main' into 2_2_Conformance
robmoffat Sep 20, 2024
d11d907
Sticking plaster waits to avoid careless race condition in many tests
robmoffat Sep 23, 2024
6387dfc
Merge branch 'conformance-2024-race-conditions' into 2_2_Conformance
robmoffat Sep 23, 2024
501247d
FDC3 PASSING CONFORMANCE
robmoffat Sep 23, 2024
fb2967a
Sticking plaster waits to avoid careless race condition in many tests #2
robmoffat Sep 24, 2024
f977fd6
Switched to using NPM Versions of FDC3
robmoffat Sep 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

# dependencies
/node_modules
/ng/node_modules

# build output
/dist
38 changes: 18 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,43 +21,43 @@ Tests are currently implemented for version [1.2](https://fdc3.finos.org/docs/1.

✔️ **Multiple Platforms**

It can be annoying for users to find that features in their apps that they rely on don't work when changing between Desktop Agents. Hopefully these conformance tests will add security around that.
It can be annoying for users to find that features in their apps that they rely on don't work when changing between Desktop Agents. Hopefully these conformance tests will add security around that.

✔️ **Marketing**

FINOS has created _badges_ to indicate conformance with the FDC3 standard. By passing the conformance tests and joining the conformance program, firms are able to use those badges in their own marketing materials.
FINOS has created _badges_ to indicate conformance with the FDC3 standard. By passing the conformance tests and joining the conformance program, firms are able to use those badges in their own marketing materials.

✔️ **Backwards Compatibility**

There are multiple versions of the FDC3 standard. A Desktop Agent could host apps written in _any one of these versions_. For that reason, it's important that Desktop Agents are tested to make sure that they keep on supporting apps written against older versions of FDC3.
There are multiple versions of the FDC3 standard. A Desktop Agent could host apps written in _any one of these versions_. For that reason, it's important that Desktop Agents are tested to make sure that they keep on supporting apps written against older versions of FDC3.

## How Does It Work?

There are two main parts to conformance:
- Running the tests _locally_, then
- Joining the Conformance Program

- Running the tests _locally_, then
- Joining the Conformance Program

### Running The Conformance Tests

You can either run the hosted conformance tests listed in the FINOS App Directory, or run them on your local machine (useful if you are making changes). Instructions for doing either of those things are here:
You can either run the hosted conformance tests listed in the FINOS App Directory, or run them on your local machine (useful if you are making changes). Instructions for doing either of those things are here:

#### Using The FINOS App Directory

If you have a Desktop Agent supporting the [AppD v2 standard](https://fdc3.finos.org/docs/app-directory/spec), you can point it at [The FINOS App Directory](https://directory.fdc3.finos.org) which contains not only the current conformance suite but also many other sample FDC3 applications. The endpoint for your agent is:
If you have a Desktop Agent supporting the [AppD v2 standard](https://fdc3.finos.org/docs/app-directory/spec), you can point it at [The FINOS App Directory](https://directory.fdc3.finos.org) which contains not only the current conformance suite but also many other sample FDC3 applications. The endpoint for your agent is:

- https://directory.fdc3.finos.org/v2/apps
- https://directory.fdc3.finos.org/v2/apps

#### Local Installation

1. **Check Out The Repo**

This repository currently contains:

- `tests` - the FDC3 conformance tests, implemented using Mocha / TypeScript, making use of the FDC3 type definitions, [@finos/fdc3](https://www.npmjs.com/package/@finos/fdc3).
- `static` - HTML files used to create the static server
- `directory` - Some JSON files in the FDC3 V2 Directory format that you can use to set up your desktop agent with either 1.2 or 2.0 test suites.
- `terms-conditions` - [Terms and Conditions](terms-conditions/FDC3-Certified-Terms.md) of the Conformance Program. Instructions for joining the program are [here](Instructions.md)
- `tests` - the FDC3 conformance tests, implemented using Mocha / TypeScript, making use of the FDC3 type definitions, [@finos/fdc3](https://www.npmjs.com/package/@finos/fdc3).
- `static` - HTML files used to create the static server
- `directory` - Some JSON files in the FDC3 V2 Directory format that you can use to set up your desktop agent with either 1.2 or 2.0 test suites.
- `terms-conditions` - [Terms and Conditions](terms-conditions/FDC3-Certified-Terms.md) of the Conformance Program. Instructions for joining the program are [here](Instructions.md)

2. **Install Dependencies**

Expand All @@ -77,7 +77,7 @@ npm run start

4. **Set Up Your Desktop Agent**

You will need to set up your desktop agent so that it has an _App Directory containing all the conformance apps_.
You will need to set up your desktop agent so that it has an _App Directory containing all the conformance apps_.
This step is vendor-dependent, but examples of `AppD` records can be found in the `directory` folder.

### Running The Tests
Expand All @@ -86,7 +86,7 @@ Once you have configured your desktop agent correctly, open the conformance app

<img src="static/selecting.png" alt="Selecting Tests" width="400px" />

The tests run and produce an output in the window. Failure are shown with a stack trace in red:
The tests run and produce an output in the window. Failure are shown with a stack trace in red:

<img src="static/failing.png" alt="Running Tests" width="400px" />

Expand All @@ -106,20 +106,18 @@ Once you have followed these steps, you will be allowed to display the FDC3 Comp

### Who Is Conformant?

We publish the details of conformant desktop agents on the [FDC3 Community Page](https://fdc3.finos.org/community). Please check there to find out who FINOS has certified!
We publish the details of conformant desktop agents on the [FDC3 Community Page](https://fdc3.finos.org/community). Please check there to find out who FINOS has certified!

[Read the latest blog post here about the certification announcements at OSFF New York](https://www.finos.org/blog/first-fdc3-1.2-certified-desktop-agents)


## Contributing

Please see [CONTRIBUTING](CONTRIBUTING.md) page.

## License

Copyright 2022 FINOS
Copyright 2022 FINOS

Distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).

SPDX-License-Identifier: [Apache-2.0](https://spdx.org/licenses/Apache-2.0)

SPDX-License-Identifier: [Apache-2.0](https://spdx.org/licenses/Apache-2.0)
31 changes: 31 additions & 0 deletions ng/features/intents-tests.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Feature: FDC3 Raise Intents

Background:
Given A Desktop Agent in "api1"
And "textContextX" is a context object with the following contents
| type |
| textContextX |
And the following apps are configured with the following behaviours
| App | Usage | ListensFor (pattern: intent([context-types…]) (=> result-type)) | On Startup |
| A | Raise Intent tests without results | aTestingIntent(testContextX,testContextZ) sharedTestingIntent1(testContextX) | addIntentListener() for given intents |
| B | Raise Intent tests with Context results | bTestingIntent(testContextY) sharedTestingIntent1(testContextX, testContextY) => testContextY | addIntentListener() for given intents |
| C | Find Intent tests (never started) | cTestingIntent(testContextX) => testContextZ | addIntentListener() for given intents |
| D | Find Intent tests (never started) | sharedTestingIntent2(testContextX) => testContextZ | addIntentListener() for given intents |
| E | Find Intent & Raise Intent with Channel result | sharedTestingIntent2(testContextY) => channel | addIntentListener() for given intents |
| F | Find Intent & Raise Intent with PrivateChannel result | sharedTestingIntent2(testContextY) => channel<testContextZ> * | addIntentListener() for given intents |
| G | Find Intent tests (never started) | sharedTestingIntent2(testContextY) | addIntentListener() for given intents |
| H | Raise Intent (bad config/behavior) | sharedTestingIntent2(testContextY) => testContextZ | - no action |
| I | Raise Intent (bad config/behavior) | sharedTestingIntent2(testContextY) => testContextZ | addIntentListener(‘MadeUpIntent’, handler) |
| J | PrivateChannels are private | privateChannelIsPrivate(privateChannelDetails) => privateChannelIsPrivateResult | Tries to retrieve privateChannel sent in the privateChannelDetails context, fails |
| K | PrivateChannel lifecycle events | kTestingIntent(testContextX) => channel<testContextZ> | addIntentListener() for given intents |

@FDC3-2.0
Scenario: 2.0-RaiseIntentSingleResolve
When I call "api1" with "raiseIntent" with parameters "aTestingIntent" and "{testContextX}"
And I refer to {result} as "intentResolution"
Then "{intentResoltion}" is an object with the following contents
| source.appId | intent | source.instanceId |
| A | aTestingIntent | <exists> |
And I call "intentResolution" with "getResult"
And "{result}" is void
And I can close the app with instanceId "{intentResoltion.source.instanceId}"
15 changes: 15 additions & 0 deletions ng/features/open-tests.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Feature: FDC3 Open
App A calls a function (see below) to open a second app, B

Background:
Given A Desktop Agent in "api1"
And "AppB" is the ID of an FDC3 Application named "AppBName"

@FDC3-1.2
Scenario: AOpensB1
When I call "api1" with "open" with parameter "AppBName"
Then "{result}" is an object with the following contents
| appIdentifier | instanceId |
| AppB | <exists> |
And I receive an "app-opened" event with appId "AppB"
And I can close the app with instanceId "{result.instanceId}"
6 changes: 6 additions & 0 deletions ng/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<html>
<body>
<p>Hello Vite!</p>
<script type="module" src="src/ui/testing-app.ts"></script>
</body>
</html>
Loading
Loading