Skip to content

Commit

Permalink
fix: Fix types
Browse files Browse the repository at this point in the history
  • Loading branch information
mauriciolauffer committed Sep 21, 2023
1 parent 7bceafa commit e1ba774
Show file tree
Hide file tree
Showing 18 changed files with 259 additions and 77 deletions.
2 changes: 1 addition & 1 deletion .eslintrc.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
root: true
extends:
- eslint-config-mlauffer-nodejs
- plugin:jsdoc/recommended-typescript-error
- plugin:jsdoc/recommended-typescript
- plugin:@typescript-eslint/recommended
parser: '@typescript-eslint/parser'
plugins:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
persist-credentials: false

Expand Down
25 changes: 25 additions & 0 deletions .github/workflows/npm-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: NPM Package Publish

on:
release:
types: [created]

permissions: read-all

jobs:
publish:
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: 20
registry-url: https://registry.npmjs.org
cache: npm
- run: npm ci --ignore-scripts
- run: npm run build
- run: npm publish --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_SECRET }}
20 changes: 20 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: release
on:
push:
branches: [master]


permissions: read-all

jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: google-github-actions/release-please-action@v3
with:
token: ${{ secrets.GH_PAT }}
release-type: node
package-name: vitest-environment-ui5
2 changes: 1 addition & 1 deletion .github/workflows/scorecards-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:

steps:
- name: "Checkout code"
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
persist-credentials: false

Expand Down
15 changes: 9 additions & 6 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,18 @@ permissions: read-all
jobs:
test:
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- uses: actions/checkout@v3
with:
persist-credentials: false
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: 20
cache: npm
- run: npm install -g eslint --ignore-scripts
- run: npm ci --ignore-scripts
- run: npm run lint
- run: npm test
- run: npm run build
- run: npm run test:ci
- run: npm run lint:ci
- uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: eslint.sarif
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -128,3 +128,5 @@ dist
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

*.sarif
10 changes: 7 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,17 @@ All submissions, including submissions by project members, require review. The p

1. Install dependencies:

npm install
npm ci

2. Lint the codebase:
2. Build:

npm run build

3. Lint the codebase:

npm run lint

3. Run the tests:
4. Run the tests:

npm test

Expand Down
77 changes: 76 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,76 @@
# vitest-environment-ui5
# vitest-environment-ui5

[![npm](https://img.shields.io/npm/v/vitest-environment-ui5)](https://www.npmjs.com/package/vitest-environment-ui5) [![test](https://github.com/mauriciolauffer/vitest-environment-ui5/actions/workflows/test.yml/badge.svg)](https://github.com/mauriciolauffer/vitest-environment-ui5/actions/workflows/test.yml)

A `Vitest Environment` for unit testing `UI5` code. Run your unit tests in a blazing fast way! Neither webserver nor browser are required. It runs in `Node.js` and uses `jsdom` to emulate browser environment.

See [Vitest Environment](https://vitest.dev/guide/environment.html) and [jsdom](https://github.com/jsdom/jsdom) for more details.

## Installation

Install `vitest-environment-ui5`, and `vitest`, as devDependencies:

```shell
$ npm i -D vitest vitest-environment-ui5
```

## Setup

Vitest uses `node` as default test environment. In order to change it to a different environment, `vitest-environment-ui5`, we will either have to define it in `vitest.config.js` or add a `@vitest-environment` docblock at the top of the test file. See [Vitest Config](https://vitest.dev/config/#environment) for more details.

`vitest-environment-ui5` builds `jsdom` from a local HTML file, no webserver required. The HTML file should contain the `UI5` bootstrap, similar to this one: [ui5 bootstrap](test/fixtures/ui5-unit-test.html).

You can change the [UI5 bootstrap configuration](https://sapui5.hana.ondemand.com/sdk/#/topic/a04b0d10fb494d1cb722b9e341b584ba) as you wish, just like in your webapp. You can even open the file in a browser to see `UI5` being loaded. However, no tests will be executed.

### Vitest Configuration

```js
import { defineConfig } from "vitest/config";

export default defineConfig({
test: {
environment: "ui5",
environmentOptions: {
ui5: {
path: 'test/ui5-unit-test.html' // Path to the HTML file containing UI5 bootstrap
}
}
}
});
```

### Vitest DocBlock

```js
/**
* @vitest-environment ui5
* @vitest-environment-options { "path": "test/ui5-unit-test.html" }
*/

import {expect, test} from 'vitest';

test('UI5 is loaded', () => {
expect(window.sap).toBeTruthy();
expect(sap).toBeTruthy();
expect(sap.ui.getCore()).toBeTruthy();
expect(sap.ui.version).toBeTruthy();
});
```

## Run

Run the tests with `Vitest` [CLI](https://vitest.dev/guide/cli.html):

```shell
$ vitest
```

## Author

Mauricio Lauffer

* LinkedIn: [https://www.linkedin.com/in/mauriciolauffer](https://www.linkedin.com/in/mauriciolauffer)

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
86 changes: 74 additions & 12 deletions package-lock.json

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

7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,13 @@
"build": "tsc",
"watch": "tsc -w",
"lint": "eslint src test --cache",
"lint:ci": "eslint src -f @microsoft/eslint-formatter-sarif -o eslint.sarif",
"test": "cd test/env-ui5 && vitest",
"test:ci": "cd test/env-ui5 && vitest run --coverage"
},
"peerDependencies": {
"vitest": "^0.34.4"
"vitest": ">=0.30",
"typescript": ">=5"
},
"repository": {
"type": "git",
Expand All @@ -49,6 +51,7 @@
"@typescript-eslint/parser": "^6.7.2",
"@vitest/coverage-v8": "^0.34.4",
"eslint": "^8.49.0",
"eslint-config-mlauffer-nodejs": "^1.4.2"
"eslint-config-mlauffer-nodejs": "^1.4.4",
"eslint-plugin-vitest": "^0.3.1"
}
}
Loading

0 comments on commit e1ba774

Please sign in to comment.