This repository contains an OPC UA AutoId CS server that interacts with a simulated RFID reader using a TCP socket. The RFID reader implementation has a method to inject simulated tag reads.
The DI and AutoId nodeset files are pulled from the OPC Foundation's UA-Nodeset repository which
is included as a git submodule.
The server is intended to demonstrate the usage of cucumber-js to run tests written in the
Gherkin syntax against an OPC UA server using a NodeOPCUA based OPC UA client.
The features directory contains the .feature files with the Gherkin test scenarios.
Its subdirectory step_definitions contains several TypeScript files with the step definitions
grouped by topic.
The world directory contains the file opcuaworld.ts with the scope the tests run inside.
It manages the OPC UA server and reader simulator and provides the OPC UA client and the methods
that are required to implement the step definitions.
The OPC UA server and reader simulator implementations are located in the src directory.
The submodule must be initialized and the dependencies must be installed before the tests can be run.
git submodule update --init --recursive
npm ci
The tests are run by executing
npm run test
This generates output on the console and also creates a HTML report in the reports directory.
If the default configuration does not work on the current host, for example if the standard OPC UA
port 4840 is already in use, the file .env can be changed accordingly.
Extending the tests, test setup or demo server code is best done in Visual Studio Code with the
esbenp.prettier-vscode plugin installed to use the format-on-save option.
The package.json also provides the npm run check script which applies code formatting, runs
the linter and executes a dry run of cucumber-js to point out any missing step definitions.