Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
26c7150
Moved state into ServerContext from BroadcastHandler
robmoffat Oct 31, 2025
fafd10f
Moved state out of IntentHandler
robmoffat Nov 4, 2025
e97e98c
OpenHandler now stateless, created AbstractServerContext
robmoffat Nov 4, 2025
5dcfce6
work in progress refactoring
robmoffat Nov 4, 2025
701a375
fdc3-web-impl looking sensible
robmoffat Nov 4, 2025
0c35c00
fdc3-web-impl tests running, 2 failing
robmoffat Nov 4, 2025
8de4042
fixed issue where it wasn't unsubscribing before disconnecting
robmoffat Nov 4, 2025
a49fbf4
Tests passing and completing ok
robmoffat Nov 4, 2025
6b11d1e
get-agent tests working
robmoffat Nov 4, 2025
bb760dc
Conformance tests passing
robmoffat Nov 5, 2025
162a839
Code coverage. Moving event propagation into FDC3ServerInstance
robmoffat Nov 5, 2025
994fdb2
Added changelog
robmoffat Nov 5, 2025
8fe4d5f
renamed 2 files for clarity. fixed linter issue
robmoffat Nov 5, 2025
719a5c5
removed unused import
robmoffat Nov 5, 2025
e237716
fixing rename issues
robmoffat Nov 5, 2025
6e203cf
modifying timers to address a race condition on closing windows
robmoffat Nov 6, 2025
87902ea
Removed fdc3-web-impl, got get-agent tests working
robmoffat Jan 13, 2026
4cf58e4
Allowed coverage of test/support classes
robmoffat Jan 13, 2026
4ec1956
Removed unused test code
robmoffat Jan 13, 2026
e0a1931
Removed unused responses
robmoffat Jan 13, 2026
6d67ed0
removed unused code
robmoffat Jan 13, 2026
7e82114
Merge branch 'fdc3-new-conformance-2.2' into server-context-refactor
robmoffat Jan 15, 2026
49ad71f
Merge branch 'main' into server-context-refactor
robmoffat Jan 15, 2026
ac4a2ae
Publish fdc3-testing for use in Sail / other downstreams
robmoffat Jan 15, 2026
db502d2
Added readme for the testing folder
robmoffat Jan 20, 2026
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 CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* Added Conformance tests for FDC3 2.2 ([#1586](https://github.com/finos/FDC3/pull/1586))
* Fix for channel change listeners not sending addEventListenerRequests ([#1606](https://github.com/finos/FDC3/pull/1606))
* When adding a listener on the current channel, the payload.channelId should be null ([#1611](https://github.com/finos/FDC3/pull/1611))
* Refactoring of the `fdc3-web-impl` handlers to remove cyclic dependency and manage state in `FDC3ServerInstance`s. ([#1696](https://github.com/finos/FDC3/pull/1696))

### Deprecated

Expand Down
13 changes: 6 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,16 +86,15 @@ This project (the FDC3 Standard repo) is now a monorepo containing the following
| `packages/fdc3-schema` | `@finos/fdc3-schema` (npm) | Contains the FDC3 For The Web and Desktop Agent Bridging protocol schemas. Generates `BridgingTypes.ts` and `BrowserTypes.ts` versions of those schemas for consumption in typescript code. | n/a |
| `packages/fdc3-context` | `@finos/fdc3-context` (npm) | Contains the schemas for standard FDC3 context types. Generates the `ContextTypes.ts` typescript version of the schema for consumption in typescript/javascript. | n/a |
| `packages/fdc3-standard` | `@finos/fdc3-standard` (npm) | Interface definitions for the FDC3 standard in typescript (e.g. the `DesktopAgent` interface) and the app directory schema. | Jest, embedded NYC |
| `packages/fdc3-agent-proxy` | `@finos/fdc3-agent-proxy` (npm) | Contains a complete implementation of the FDC3 DACP. Written in a platform-agnostic manner. | Cucumber, NYC |
| `packages/fdc3-get-agent` | `@finos/fdc3-get-agent` (npm) | Implements the `getAgent` and `fdc3Ready()` functions as well as the FDC3 Web Connection protocol to allow FDC3 to work on the web or in an electron container. | Cucumber, NYC |
| `packages/fdc3-agent-proxy` | `@finos/fdc3-agent-proxy` (npm) | Contains a complete implementation of the FDC3 DACP. Written in a platform-agnostic manner. | Cucumber, NYC |
| `packages/fdc3-get-agent` | `@finos/fdc3-get-agent` (npm) | Implements the `getAgent` and `fdc3Ready()` functions as well as the FDC3 Web Connection protocol to allow FDC3 to work on the web or in an electron container. | Cucumber, NYC |
| `packages/testing` | -not released- | Contains testing tools used by the cucumber tests used within other modules of this project. | |
| `toolbox/fdc3-conformance` | -not released- | Contains definitions of the [FDC3 conformance test suite](https://fdc3.finos.org/docs/api/conformance/Conformance-Overview) | Test Definitions Only |
| `toolbox/fdc3-conformance` | -not released- | Contains definitions of the [FDC3 conformance test suite](https://fdc3.finos.org/docs/api/conformance/Conformance-Overview) | Test Definitions Only |
| `toolbox/fdc3-workbench` | [here](https://fdc3.finos.org/toolbox/fdc3-workbench/) | Contains an FDC3-For-Web ready version of the [FDC3 Workbench](toolbox/fdc3-workbench/README.md). | |
| `toolbox/fdc3-explained` | [Here](https://fdc3.finos.org/toolbox/fdc3-explained) | [Readme Here](toolbox/fdc3-explained/README.md) | |
| `toolbox/fdc3-for-web/fdc3-web-impl` | `@finos/fdc3-web-impl` (npm) | Portable and reusable implementation of the FDC3 For-The-Web Desktop Agent-Side protocol, | Cucumber, NYC |
| `toolbox/fdc3-for-web/demo` | -not released- | A reference implementation of an FDC3-For-The-Web Desktop Agent, using the above implementation and conforming to the conformance test suite (see above) | |
| `packages/fdc3` | `@finos/fdc3` (npm) | Imports `fdc3-standard`, `fdc3-context`, `fdc3-schema` and `fdc3-get-agent` sub-modules. This is intended to be the main entry point for typescript / javascript applications using FDC3 | |
| `packages/fdc3-commonjs` | `@finos/fdc3-commonjs` (npm) | A roll-up of the `fdc3` sub-module. This is for **backwards compatibility where CommonJS is required**. May not be provided in future versions of FDC3. | |
| `toolbox/fdc3-for-web/demo` | -not released- | Scripts to run FDC3-Sail so you can try out FDC3 in your browser. | |
| `packages/fdc3` | `@finos/fdc3` (npm) | Imports `fdc3-standard`, `fdc3-context`, `fdc3-schema` and `fdc3-get-agent` sub-modules. This is intended to be the main entry point for typescript / javascript applications using FDC3 | |
| `packages/fdc3-commonjs` | `@finos/fdc3-commonjs` (npm) | A roll-up of the `fdc3` sub-module. This is for **backwards compatibility where CommonJS is required**. May not be provided in future versions of FDC3. | |


### Building and Running The FDC3 Modules
Expand Down
140 changes: 61 additions & 79 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"packages/fdc3-schema",
"packages/fdc3-context",
"packages/fdc3-standard",
"packages/testing",
"packages/fdc3-testing",
"packages/fdc3-agent-proxy",
"toolbox/fdc3-for-web/fdc3-web-impl",
"packages/fdc3-get-agent",
Expand Down Expand Up @@ -67,4 +67,4 @@
"lint-staged": {
"**/*": "prettier --write --ignore-unknown"
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Given, When } from '@cucumber/cucumber';
import { SimpleIntentResolver } from '@finos/testing';
import { SimpleIntentResolver } from '@finos/fdc3-testing';
import { CustomWorld } from '../world/index';
import { CHANNEL_STATE } from '@finos/testing';
import { CHANNEL_STATE } from '@finos/fdc3-testing';
import {
DefaultChannelSupport,
DefaultHeartbeatSupport,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { DataTable, Given, Then, When } from '@cucumber/cucumber';
import { Context } from '@finos/fdc3-context';
import { handleResolve, matchData } from '@finos/testing';
import { handleResolve, matchData } from '@finos/fdc3-testing';
import { CustomWorld } from '../world/index';
import { CHANNEL_STATE } from '@finos/testing';
import { CHANNEL_STATE } from '@finos/fdc3-testing';
import { ApiEvent } from '@finos/fdc3-standard';
import {
BroadcastEvent,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import {
DefaultIntentSupport,
DefaultHeartbeatSupport,
} from '../../src';
import { SimpleIntentResolver, setupGenericSteps } from '@finos/testing';
import { CHANNEL_STATE, SimpleChannelSelector } from '@finos/testing/dist/src/agent';
import { SimpleIntentResolver, setupGenericSteps } from '@finos/fdc3-testing';
import { CHANNEL_STATE, SimpleChannelSelector } from '@finos/fdc3-testing/dist/src/agent';
import { HeartbeatEvent } from '@finos/fdc3-schema/dist/generated/api/BrowserTypes';
import { LogLevel } from '@finos/fdc3-standard';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Given } from '@cucumber/cucumber';
import { CustomWorld } from '../world/index';
import { handleResolve } from '@finos/testing';
import { handleResolve } from '@finos/fdc3-testing';
import { Context } from '@finos/fdc3-context';
import { ContextMetadata, ResolveError } from '@finos/fdc3-standard';
import { IntentEvent } from '@finos/fdc3-schema/dist/generated/api/BrowserTypes';
Expand Down
2 changes: 1 addition & 1 deletion packages/fdc3-agent-proxy/test/world/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { setWorldConstructor } from '@cucumber/cucumber';
import { TestMessaging } from '../support/TestMessaging';
import { PropsWorld } from '@finos/testing';
import { PropsWorld } from '@finos/fdc3-testing';

export class CustomWorld extends PropsWorld {
messaging: TestMessaging | null = null;
Expand Down
2 changes: 1 addition & 1 deletion packages/fdc3-agent-proxy/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"path": "../fdc3-context"
},
{
"path": "../testing"
"path": "../fdc3-testing"
},
{
"path": "../fdc3-context"
Expand Down
14 changes: 14 additions & 0 deletions packages/fdc3-get-agent/.nycrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"include": [
"dist/src/**/*.js"
],
"exclude": [
"**/*.d.ts"
],
"reporter": [
"lcov",
"text",
"json"
],
"all": true
}
14 changes: 14 additions & 0 deletions packages/fdc3-get-agent/.nycrc.test-coverage.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"include": [
"dist/test/support/**/*.js"
],
"exclude": [
"**/*.d.ts"
],
"reporter": [
"lcov",
"text",
"json"
],
"all": true
}
7 changes: 3 additions & 4 deletions packages/fdc3-get-agent/cucumber.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ default:
paths:
- test/features/*.feature
require:
- test/step-definitions/*.steps.ts
- test/support/*.ts
- test/world/index.ts
- dist/test/step-definitions/*.steps.js
- dist/test/support/*.js
- dist/test/world/index.js
requireModule:
- ts-node/register
tags: "not @failing"

8 changes: 4 additions & 4 deletions packages/fdc3-get-agent/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@
],
"scripts": {
"build": "tsc --module es2022",
"test": "tsc && nyc --reporter=lcov --reporter=text --reporter json cucumber-js",
"clean": "rimraf dist cucumber-report.html coverage .nyc_output node_modules test-results.xml",
"test": "tsc && nyc --nycrc-path .nycrc.json cucumber-js",
"test:coverage-test-infra": "tsc && nyc --nycrc-path .nycrc.test-coverage.json cucumber-js",
"clean": "rimraf dist cucumber-report.html coverage coverage-test-infra .nyc_output node_modules test-results.xml",
"lint": "eslint src/"
},
"dependencies": {
Expand All @@ -34,7 +35,6 @@
"@cucumber/cucumber": "10.3.1",
"@cucumber/messages": "^28.1.0",
"@eslint/js": "^9.19.0",
"@finos/fdc3-web-impl": "2.2.1-beta.4",
"@finos/testing": "2.2.1-beta.4",
"@types/node": "^20.16.11",
"@types/wtfnode": "^0.7.3",
Expand All @@ -50,4 +50,4 @@
"typescript-eslint": "^8.17.0",
"wtfnode": "^0.9.3"
}
}
}
Loading
Loading