This package provides the new web interface of the Web of Things Playground. It uses the functionality of the core
package to validate Thing Descriptions and Models. You can find more information about the Thingweb-Playground here.
- Validation of TDs and TMs
- Multiple editors
- JSON and YAML conversion
- An examples menu to use as templates
- A save menu, where your currently opened TD/TM can be:
- Exported as an URL either on a new tab/browser or on the [ediTDor] (https://eclipse.github.io/editdor/) website
- Downloaded directly
- Saved in a specific folder within your file system (This function is only available on
Chrome
,Edge
andOpera
)
- A preferences menu within the settings, where the color theme, and font size can be change
- AsyncAPI conversion
- A defaults view where all defaults can be added or removed from your current TD
- Visualize view, where your current TD/TM can be represented visually as a Graph or Tree, as well as downloaded as either SVG or PNG
Licensed under the MIT license, see License.
Icons used in this project (excluding the TD file icon) are sourced from FontAwesome Free 6.5.1 by @fontawesome - FontAwesome. License information can be found here: FontAwesome License. Copyright © 2024 Fonticons, Inc.
- Online: It is hosted here
- Simply paste a TD or utilize an example from the examples menu and click on validate
- The validation process will then start on the bottom console, where more information will be provided in case of errors or warnings
This package is built by utilizing webpack, allowing to bundle and compile the projects JavaScript and CSS files. It also handles asset management and optimization. Below are the steps to understand the current configuration:
The webpack.config.js
file is used to set up Webpack for the project. It manages various aspects of the build process, including bundling JavaScript and CSS file, handling assets like images and fonts, and optimizing code for production.
path
: This is a built-in Node.js module for handling file pathsHtmlWebpackPlugin
: A Webpack plugin for generating HTML filesCopyWebpackPlugin
: A Webpack plugin for copying files and directories during the build processMonacoWebpackPlugin
: A Webpack plugin for integrating the Monaco code editorMiniCssExtractPlugin
: A Webpack plugin for extracting CSS into separate filesCssMinimizerPlugin
: A Webpack plugin for minimizing CSS files
3.1 Entry Points
entry
: Specifies the entry points for your application. In this case, there are two entry points: 'bundle' for JavaScript and 'styles' for CSS
3.2 Output
output
: Specifies where Webpack should output the bundled files. The path property defines the output directory as 'dist', and the filename property determines the naming pattern for generated files. [name] is a placeholder for the entry point name, and [contenthash] is a unique hash based on file contentclean
: Tells Webpack to clean the 'dist' directory before each buildassetModuleFilename
: Specifies the filename for asset files
3.3 Development Server
devServer
: Configures the development server with settings such as the port, compressing assets, and enabling history API fallback
3.4 Module Rules
module
: Defines rules for how Webpack should process different file types. There are rules for JavaScript, images, CSS, and more. For example, it uses Babel to transpile JavaScript, handles image assets, and processes CSS with style loaders and sass loaders
3.5 Plugins
plugins
: Lists the plugins used in the build process. Key plugins includeHtmlWebpackPlugin
for generating HTML files,CopyWebpackPlugin
for copying assets,MonacoWebpackPlugin
for the Monaco code editor integration, andMiniCssExtractPlugin
for extracting CSS into separate files
3.6 Optimization
optimization
: Contains settings for optimizing the build, including minimizing CSS usingCssMinimizerPlugin
Requires Lerna to be installed globally (npm install -g lerna
).
- Clone the repo
- Install the monorepo (allows linking unpublished versions)
- Install the web package locally to ensure that e.g.
core
dependency is not just a symlink
git clone [email protected]:eclipse-thingweb/playground.git
cd playground
lerna bootstrap
cd ./packages/web
npm install
Finally the web application can be deployed in production or in development mode:
- Utilize the command
npm run dev
which will start the webpack-dev-server in development mode, generate source maps for easier debugging, open your default browser, and serve the application.
npm run dev
- Build the project with the command
npm run build
which will automatically set the mode to production - Finally utilize the command
npm run serve
to serve the application utilizing express as the server
npm run build
npm run serve
To utilize the Playwright package for testing the application, you need to install it using npm install
since it's not intended for production use. Additionally, to set up the supported browsers required for Playwright to run tests, you should execute the command npx playwright install
.
You can assess the visual appearance and functionality of the package in all browsers by running the command npm run test
. This will execute all the tests in the supported browsers, and once the tests have finished, Playwright will host the reports at http://localhost:9323
.
If the reports aren't displayed automatically, you can also use the command npx playwright show-report
to view the test results.
For a more visual approach to writing and visualizing tests, you can use the command npx playwright test --ui
. This command provides a visual interface that allows you to step through each part of the test and observe what occurs before, during, and after each step.
Debugging can also be accomplished by running the Playwright test command with the --debug
flag, like this: npx playwright test --debug
.
For additional information on how to run and debug tests, please refer to the official Playwright website.