Skip to content
Open
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
1fef2c6
Improves a11y in forms
duzda Apr 3, 2025
f2ef29c
Bump version 0.1.4
carma12 Apr 14, 2025
f00c6cc
Update dependencies to latest version
carma12 Apr 2, 2025
68e9f2f
Adjust linter configuration and fix files
carma12 Apr 3, 2025
7d24389
Fix EsLint and add prettier ignore
carma12 Apr 4, 2025
1402dcb
Fix undefined variables
carma12 Apr 7, 2025
da3bb10
Fix: Update testing library and jsdom
carma12 Apr 7, 2025
6dceadf
Eslint, prettier, tsconfig post-update sync
duzda Apr 8, 2025
d795563
Fix negative test
duzda Apr 8, 2025
1d0f292
Change Github runners and node version on gating
carma12 Apr 9, 2025
3e273d5
Fix: integration tests errors
carma12 Apr 9, 2025
0224798
Post-update package-lock
carma12 Apr 15, 2025
28a6225
Fix: failing integration test
carma12 Apr 15, 2025
711df24
Fix: Prettier
carma12 Apr 15, 2025
ce5f1dd
Adds logout
duzda Apr 15, 2025
805fc69
Fixes netgroup test
duzda Apr 15, 2025
9055207
Enable cypress video recording
duzda Apr 16, 2025
a796f97
Await save button
duzda Apr 16, 2025
de397a9
Split Sudo rules settings tests
carma12 Apr 16, 2025
a28d171
Removed wait hack
duzda Apr 16, 2025
7a4779a
Add Cert. Id. mapping rules page
carma12 Apr 8, 2025
52d412d
Increase wait and timeout values
carma12 Apr 23, 2025
d5a6559
Certificate id. mapping global config page
carma12 Apr 15, 2025
221a4b5
Rename file and adjust waiting times
carma12 Apr 23, 2025
2e32612
Add 'Cert. mapping match' page
carma12 Apr 22, 2025
331e05d
Whitelist react-router vulnerabilities
carma12 Apr 29, 2025
b0d5938
Add 'Cert. id. mapping' > Settings page
carma12 Apr 24, 2025
85d41fc
Implement kebab options in Settings page
carma12 Apr 24, 2025
23cae66
Remove console.log leftovers
carma12 May 5, 2025
fd84d48
feat: Custom Plugin Infrastructure with examples provided
b3lix Mar 28, 2025
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
3 changes: 0 additions & 3 deletions .eslintignore

This file was deleted.

35 changes: 0 additions & 35 deletions .eslintrc

This file was deleted.

12 changes: 6 additions & 6 deletions .github/workflows/gating.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ env:
jobs:
audit-and-build:
name: Audit and build
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
container:
image: fedora:latest

Expand All @@ -23,7 +23,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "22"

- name: Audit dependencies
run: npx audit-ci --config audit-ci.json --skip-dev
Expand Down Expand Up @@ -57,14 +57,14 @@ jobs:
unit-tests:
name: Unit tests
needs: audit-and-build
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "22"

- name: Install project
run: npm install
Expand All @@ -75,7 +75,7 @@ jobs:
integration-tests:
name: Integration tests
needs: audit-and-build
runs-on: ubuntu-20.04
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
Expand All @@ -86,7 +86,7 @@ jobs:
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update
sudo apt install vagrant vagrant-sshfs virtualbox
sudo apt install vagrant virtualbox

- uses: actions/download-artifact@v4
with:
Expand Down
8 changes: 5 additions & 3 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
node_modules/*
dist/*
coverage/*
node_modules/**
dist/**
coverage/**
doc/**
tests/ipalab/_venv
3 changes: 2 additions & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"tabWidth": 2,
"useTabs": false
"useTabs": false,
"trailingComma": "es5"
}
4 changes: 3 additions & 1 deletion audit-ci.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
"GHSA-c2qf-rxjj-qqgw|@babel/preset-env>semver",
"GHSA-c2qf-rxjj-qqgw|babel-loader>make-dir>semver",
"GHSA-c2qf-rxjj-qqgw|@babel/preset-env>babel-plugin-polyfill-corejs2>semver",
"GHSA-c2qf-rxjj-qqgw|@babel/preset-env>babel-plugin-polyfill-corejs2>@babel/helper-define-polyfill-provider>semver"
"GHSA-c2qf-rxjj-qqgw|@babel/preset-env>babel-plugin-polyfill-corejs2>@babel/helper-define-polyfill-provider>semver",
"GHSA-cpj6-fhp6-mr6j",
"GHSA-f46r-rw29-r322"
]
}
1 change: 1 addition & 0 deletions cypress/cypress.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { verifyDownloadTasks } from "cy-verify-downloads";
import { polyfillNode } from "esbuild-plugin-polyfill-node";

export default defineConfig({
video: true,
e2e: {
specPattern: "**/*.feature",
baseUrl: "https://server.ipa.demo/",
Expand Down
15 changes: 12 additions & 3 deletions cypress/support/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,15 @@ Cypress.Commands.add("loginAsAnUser", (username: string, password: string) => {
cy.visit(Cypress.env("base_url"));
});

Cypress.Commands.add("logout", () => {
cy.get(".pf-v5-c-menu-toggle__text")
.first()
.click()
.then(() => {
cy.get(".pf-v5-c-menu__item").contains("Log out").click();
});
});

Cypress.Commands.add("userCleanup", () => {
cy.get("tr[id=admin]", { timeout: 10000 }).should("be.visible");
cy.get('input[aria-label="Select all"]').check();
Expand All @@ -65,19 +74,19 @@ Cypress.Commands.add("createTestUser", (username: string) => {
.contains("User login")
.parent()
.then(($label) => {
cy.get("#modal-form-" + $label.attr("for")).type(username);
cy.get("#" + $label.attr("for")).type(username);
});
cy.get("[role=dialog] label")
.contains("First name")
.parent()
.then(($label) => {
cy.get("#modal-form-" + $label.attr("for")).type("Arctic");
cy.get("#" + $label.attr("for")).type("Arctic");
});
cy.get("[role=dialog] label")
.contains("Last name")
.parent()
.then(($label) => {
cy.get("#modal-form-" + $label.attr("for")).type("Asbestos");
cy.get("#" + $label.attr("for")).type("Asbestos");
});
cy.get("[role=dialog] button").contains("Add").click();
}
Expand Down
4 changes: 4 additions & 0 deletions cypress/support/e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,7 @@ before(() => {
cy.loginAsAnUser(Cypress.env("admin_login"), Cypress.env("admin_password"));
cy.userCleanup();
});

after(() => {
cy.logout();
});
2 changes: 1 addition & 1 deletion cypress/support/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
/// <reference types="cypress" />

// eslint-disable-next-line @typescript-eslint/no-namespace
declare namespace Cypress {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
interface Chainable<Subject> {
createTestUser(username: string): Chainable<void>;
loginAsAnUser(username: string, password: string): Chainable<void>;
logout(): Chainable<void>;
userCleanup(): Chainable<void>;
}
}
71 changes: 71 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import { defineConfig, globalIgnores } from "eslint/config";
import typescriptEslint from "@typescript-eslint/eslint-plugin";
import reactHooks from "eslint-plugin-react-hooks";
import prettier from "eslint-plugin-prettier";
import { fixupPluginRules } from "@eslint/compat";
import globals from "globals";
import tsParser from "@typescript-eslint/parser";
import path from "node:path";
import { fileURLToPath } from "node:url";
import js from "@eslint/js";
import { FlatCompat } from "@eslint/eslintrc";

const compat = new FlatCompat({
baseDirectory: path.dirname(fileURLToPath(import.meta.url)),
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});

export default defineConfig([
globalIgnores([
"node_modules/**",
"dist/**",
"coverage/**",
"doc/**",
"tests/ipalab/_venv",
]),
{
extends: compat.extends(
"eslint:recommended",
"plugin:react/recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
),

plugins: {
"@typescript-eslint": typescriptEslint,
"react-hooks": fixupPluginRules(reactHooks),
prettier,
},

languageOptions: {
globals: {
...globals.browser,
...globals.node,
},

parser: tsParser,
ecmaVersion: 5,
sourceType: "commonjs",

parserOptions: {
tsx: true,
jsx: true,
js: true,
useJSXTextNode: true,
project: ["./tsconfig.json"],
tsconfigRootDir: ".",
},
},

settings: {
react: {
version: "detect",
},
},

rules: {
"prettier/prettier": "error",
},
},
]);
2 changes: 1 addition & 1 deletion index.dev.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
Expand Down
Loading