Compare commits
	
		
			8 Commits
		
	
	
		
			enterprise
			...
			web/bug/fi
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 1c9e4652f9 | |||
| 079ed7bf4c | |||
| 430278712f | |||
| 2aad79b5db | |||
| 0fcf1ebf94 | |||
| ed7c1b9b3e | |||
| e71e875056 | |||
| 705f096e3f | 
							
								
								
									
										10389
									
								
								web/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10389
									
								
								web/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -75,10 +75,10 @@
 | 
				
			|||||||
        "@types/showdown": "^2.0.6",
 | 
					        "@types/showdown": "^2.0.6",
 | 
				
			||||||
        "@typescript-eslint/eslint-plugin": "^8.7.0",
 | 
					        "@typescript-eslint/eslint-plugin": "^8.7.0",
 | 
				
			||||||
        "@typescript-eslint/parser": "^8.7.0",
 | 
					        "@typescript-eslint/parser": "^8.7.0",
 | 
				
			||||||
        "@wdio/browser-runner": "^9.1.2",
 | 
					        "@wdio/browser-runner": "^8.40.5",
 | 
				
			||||||
        "@wdio/cli": "^9.1.2",
 | 
					        "@wdio/cli": "^8.40.5",
 | 
				
			||||||
        "@wdio/mocha-framework": "^9.1.2",
 | 
					        "@wdio/mocha-framework": "^9.1.0",
 | 
				
			||||||
        "@wdio/spec-reporter": "^9.1.2",
 | 
					        "@wdio/spec-reporter": "^9.1.0",
 | 
				
			||||||
        "babel-plugin-macros": "^3.1.0",
 | 
					        "babel-plugin-macros": "^3.1.0",
 | 
				
			||||||
        "babel-plugin-tsconfig-paths": "^1.0.3",
 | 
					        "babel-plugin-tsconfig-paths": "^1.0.3",
 | 
				
			||||||
        "chokidar": "^4.0.1",
 | 
					        "chokidar": "^4.0.1",
 | 
				
			||||||
@ -86,7 +86,6 @@
 | 
				
			|||||||
        "esbuild": "^0.24.0",
 | 
					        "esbuild": "^0.24.0",
 | 
				
			||||||
        "eslint": "^9.11.1",
 | 
					        "eslint": "^9.11.1",
 | 
				
			||||||
        "eslint-plugin-lit": "^1.14.0",
 | 
					        "eslint-plugin-lit": "^1.14.0",
 | 
				
			||||||
        "eslint-plugin-sonarjs": "^2.0.2",
 | 
					 | 
				
			||||||
        "eslint-plugin-wc": "^2.1.0",
 | 
					        "eslint-plugin-wc": "^2.1.0",
 | 
				
			||||||
        "github-slugger": "^2.0.0",
 | 
					        "github-slugger": "^2.0.0",
 | 
				
			||||||
        "glob": "^11.0.0",
 | 
					        "glob": "^11.0.0",
 | 
				
			||||||
@ -330,14 +329,14 @@
 | 
				
			|||||||
            "command": "node scripts/build-storybook-import-maps.mjs"
 | 
					            "command": "node scripts/build-storybook-import-maps.mjs"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "test": {
 | 
					        "test": {
 | 
				
			||||||
            "command": "wdio run ./wdio.conf.ts --logLevel=warn",
 | 
					            "command": "wdio ./wdio.conf.ts --logLevel=info",
 | 
				
			||||||
            "env": {
 | 
					            "env": {
 | 
				
			||||||
                "CI": "true",
 | 
					                "CI": "true",
 | 
				
			||||||
                "TS_NODE_PROJECT": "tsconfig.test.json"
 | 
					                "TS_NODE_PROJECT": "tsconfig.test.json"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "test-watch": {
 | 
					        "test-watch": {
 | 
				
			||||||
            "command": "wdio run ./wdio.conf.ts",
 | 
					            "command": "wdio ./wdio.conf.ts",
 | 
				
			||||||
            "env": {
 | 
					            "env": {
 | 
				
			||||||
                "TS_NODE_PROJECT": "tsconfig.test.json"
 | 
					                "TS_NODE_PROJECT": "tsconfig.test.json"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,67 +0,0 @@
 | 
				
			|||||||
import { execFileSync } from "child_process";
 | 
					 | 
				
			||||||
import { ESLint } from "eslint";
 | 
					 | 
				
			||||||
import path from "path";
 | 
					 | 
				
			||||||
import process from "process";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Code assumes this script is in the './web/scripts' folder.
 | 
					 | 
				
			||||||
const projectRoot = execFileSync("git", ["rev-parse", "--show-toplevel"], {
 | 
					 | 
				
			||||||
    encoding: "utf8",
 | 
					 | 
				
			||||||
}).replace("\n", "");
 | 
					 | 
				
			||||||
process.chdir(path.join(projectRoot, "./web"));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const eslintConfig = {
 | 
					 | 
				
			||||||
    fix: true,
 | 
					 | 
				
			||||||
    overrideConfig: {
 | 
					 | 
				
			||||||
        env: {
 | 
					 | 
				
			||||||
            browser: true,
 | 
					 | 
				
			||||||
            es2021: true,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        extends: [
 | 
					 | 
				
			||||||
            "eslint:recommended",
 | 
					 | 
				
			||||||
            "plugin:@typescript-eslint/recommended",
 | 
					 | 
				
			||||||
            "plugin:lit/recommended",
 | 
					 | 
				
			||||||
            "plugin:custom-elements/recommended",
 | 
					 | 
				
			||||||
            "plugin:storybook/recommended",
 | 
					 | 
				
			||||||
            "plugin:sonarjs/recommended",
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        parser: "@typescript-eslint/parser",
 | 
					 | 
				
			||||||
        parserOptions: {
 | 
					 | 
				
			||||||
            ecmaVersion: 12,
 | 
					 | 
				
			||||||
            sourceType: "module",
 | 
					 | 
				
			||||||
            project: true,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        plugins: ["@typescript-eslint", "lit", "custom-elements", "sonarjs"],
 | 
					 | 
				
			||||||
        ignorePatterns: ["authentik-live-tests/**", "./.storybook/**/*.ts"],
 | 
					 | 
				
			||||||
        rules: {
 | 
					 | 
				
			||||||
            "indent": "off",
 | 
					 | 
				
			||||||
            "linebreak-style": ["error", "unix"],
 | 
					 | 
				
			||||||
            "quotes": ["error", "double", { avoidEscape: true }],
 | 
					 | 
				
			||||||
            "semi": ["error", "always"],
 | 
					 | 
				
			||||||
            "@typescript-eslint/ban-ts-comment": "off",
 | 
					 | 
				
			||||||
            "no-unused-vars": "off",
 | 
					 | 
				
			||||||
            "sonarjs/cognitive-complexity": ["warn", 9],
 | 
					 | 
				
			||||||
            "sonarjs/no-duplicate-string": "off",
 | 
					 | 
				
			||||||
            "sonarjs/no-nested-template-literals": "off",
 | 
					 | 
				
			||||||
            "@typescript-eslint/no-unused-vars": [
 | 
					 | 
				
			||||||
                "error",
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    argsIgnorePattern: "^_",
 | 
					 | 
				
			||||||
                    varsIgnorePattern: "^_",
 | 
					 | 
				
			||||||
                    caughtErrorsIgnorePattern: "^_",
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
            "no-console": ["error", { allow: ["debug", "warn", "error"] }],
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const updated = ["./src/", "./build.mjs", "./scripts/*.mjs"];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const eslint = new ESLint(eslintConfig);
 | 
					 | 
				
			||||||
const results = await eslint.lintFiles(updated);
 | 
					 | 
				
			||||||
const formatter = await eslint.loadFormatter("stylish");
 | 
					 | 
				
			||||||
const resultText = formatter.format(results);
 | 
					 | 
				
			||||||
const errors = results.reduce((acc, result) => acc + result.errorCount, 0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
console.log(resultText);
 | 
					 | 
				
			||||||
process.exit(errors > 1 ? 1 : 0);
 | 
					 | 
				
			||||||
@ -1,94 +0,0 @@
 | 
				
			|||||||
import { execFileSync } from "child_process";
 | 
					 | 
				
			||||||
import { ESLint } from "eslint";
 | 
					 | 
				
			||||||
import path from "path";
 | 
					 | 
				
			||||||
import process from "process";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Code assumes this script is in the './web/scripts' folder.
 | 
					 | 
				
			||||||
const projectRoot = execFileSync("git", ["rev-parse", "--show-toplevel"], {
 | 
					 | 
				
			||||||
    encoding: "utf8",
 | 
					 | 
				
			||||||
}).replace("\n", "");
 | 
					 | 
				
			||||||
process.chdir(path.join(projectRoot, "./web"));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const eslintConfig = {
 | 
					 | 
				
			||||||
    fix: true,
 | 
					 | 
				
			||||||
    overrideConfig: {
 | 
					 | 
				
			||||||
        env: {
 | 
					 | 
				
			||||||
            browser: true,
 | 
					 | 
				
			||||||
            es2021: true,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        extends: [
 | 
					 | 
				
			||||||
            "eslint:recommended",
 | 
					 | 
				
			||||||
            "plugin:@typescript-eslint/recommended",
 | 
					 | 
				
			||||||
            "plugin:lit/recommended",
 | 
					 | 
				
			||||||
            "plugin:custom-elements/recommended",
 | 
					 | 
				
			||||||
            "plugin:storybook/recommended",
 | 
					 | 
				
			||||||
            "plugin:sonarjs/recommended",
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        parser: "@typescript-eslint/parser",
 | 
					 | 
				
			||||||
        parserOptions: {
 | 
					 | 
				
			||||||
            ecmaVersion: 12,
 | 
					 | 
				
			||||||
            sourceType: "module",
 | 
					 | 
				
			||||||
            project: true,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        plugins: ["@typescript-eslint", "lit", "custom-elements", "sonarjs"],
 | 
					 | 
				
			||||||
        ignorePatterns: ["authentik-live-tests/**", "./.storybook/**/*.ts"],
 | 
					 | 
				
			||||||
        rules: {
 | 
					 | 
				
			||||||
            "indent": "off",
 | 
					 | 
				
			||||||
            "linebreak-style": ["error", "unix"],
 | 
					 | 
				
			||||||
            "quotes": ["error", "double", { avoidEscape: true }],
 | 
					 | 
				
			||||||
            "semi": ["error", "always"],
 | 
					 | 
				
			||||||
            "@typescript-eslint/ban-ts-comment": "off",
 | 
					 | 
				
			||||||
            "no-unused-vars": "off",
 | 
					 | 
				
			||||||
            "sonarjs/cognitive-complexity": ["warn", 9],
 | 
					 | 
				
			||||||
            "sonarjs/no-duplicate-string": "off",
 | 
					 | 
				
			||||||
            "sonarjs/no-nested-template-literals": "off",
 | 
					 | 
				
			||||||
            "@typescript-eslint/no-unused-vars": [
 | 
					 | 
				
			||||||
                "error",
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    argsIgnorePattern: "^_",
 | 
					 | 
				
			||||||
                    varsIgnorePattern: "^_",
 | 
					 | 
				
			||||||
                    caughtErrorsIgnorePattern: "^_",
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
            "no-console": ["error", { allow: ["debug", "warn", "error"] }],
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const porcelainV1 = /^(..)\s+(.*$)/;
 | 
					 | 
				
			||||||
const gitStatus = execFileSync("git", ["status", "--porcelain", "."], { encoding: "utf8" });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const statuses = gitStatus.split("\n").reduce((acc, line) => {
 | 
					 | 
				
			||||||
    const match = porcelainV1.exec(line.replace("\n"));
 | 
					 | 
				
			||||||
    if (!match) {
 | 
					 | 
				
			||||||
        return acc;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    const [status, path] = Array.from(match).slice(1, 3);
 | 
					 | 
				
			||||||
    return [...acc, [status, path.split("\x00")[0]]];
 | 
					 | 
				
			||||||
}, []);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const isModified = /^(M|\?|\s)(M|\?|\s)/;
 | 
					 | 
				
			||||||
const modified = (s) => isModified.test(s);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const isCheckable = /\.(ts|js|mjs)$/;
 | 
					 | 
				
			||||||
const checkable = (s) => isCheckable.test(s);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const ignored = /\/\.storybook\//;
 | 
					 | 
				
			||||||
const notIgnored = (s) => !ignored.test(s);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const updated = statuses.reduce(
 | 
					 | 
				
			||||||
    (acc, [status, filename]) =>
 | 
					 | 
				
			||||||
        modified(status) && checkable(filename) && notIgnored(filename)
 | 
					 | 
				
			||||||
            ? [...acc, path.join(projectRoot, filename)]
 | 
					 | 
				
			||||||
            : acc,
 | 
					 | 
				
			||||||
    [],
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const eslint = new ESLint(eslintConfig);
 | 
					 | 
				
			||||||
const results = await eslint.lintFiles(updated);
 | 
					 | 
				
			||||||
const formatter = await eslint.loadFormatter("stylish");
 | 
					 | 
				
			||||||
const resultText = formatter.format(results);
 | 
					 | 
				
			||||||
const errors = results.reduce((acc, result) => acc + result.errorCount, 0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
console.log(resultText);
 | 
					 | 
				
			||||||
process.exit(errors > 1 ? 1 : 0);
 | 
					 | 
				
			||||||
@ -1,7 +1,6 @@
 | 
				
			|||||||
import eslint from "@eslint/js";
 | 
					import eslint from "@eslint/js";
 | 
				
			||||||
import tsparser from "@typescript-eslint/parser";
 | 
					import tsparser from "@typescript-eslint/parser";
 | 
				
			||||||
import litconf from "eslint-plugin-lit";
 | 
					import litconf from "eslint-plugin-lit";
 | 
				
			||||||
import sonar from "eslint-plugin-sonarjs";
 | 
					 | 
				
			||||||
import wcconf from "eslint-plugin-wc";
 | 
					import wcconf from "eslint-plugin-wc";
 | 
				
			||||||
import globals from "globals";
 | 
					import globals from "globals";
 | 
				
			||||||
import tseslint from "typescript-eslint";
 | 
					import tseslint from "typescript-eslint";
 | 
				
			||||||
@ -9,7 +8,9 @@ import tseslint from "typescript-eslint";
 | 
				
			|||||||
const MAX_DEPTH = 4;
 | 
					const MAX_DEPTH = 4;
 | 
				
			||||||
const MAX_NESTED_CALLBACKS = 4;
 | 
					const MAX_NESTED_CALLBACKS = 4;
 | 
				
			||||||
const MAX_PARAMS = 5;
 | 
					const MAX_PARAMS = 5;
 | 
				
			||||||
const MAX_COGNITIVE_COMPLEXITY = 9;
 | 
					
 | 
				
			||||||
 | 
					// Waiting for SonarJS to be compatible
 | 
				
			||||||
 | 
					// const MAX_COGNITIVE_COMPLEXITY = 9;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const rules = {
 | 
					const rules = {
 | 
				
			||||||
    "accessor-pairs": "error",
 | 
					    "accessor-pairs": "error",
 | 
				
			||||||
@ -128,9 +129,11 @@ const rules = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    "no-unused-vars": "off",
 | 
					    "no-unused-vars": "off",
 | 
				
			||||||
    "no-console": ["error", { allow: ["debug", "warn", "error"] }],
 | 
					    "no-console": ["error", { allow: ["debug", "warn", "error"] }],
 | 
				
			||||||
    "sonarjs/cognitive-complexity": ["off", MAX_COGNITIVE_COMPLEXITY],
 | 
					    // SonarJS is not yet compatible with ESLint 9.  Commenting these out
 | 
				
			||||||
    "sonarjs/no-duplicate-string": "off",
 | 
					    // until it is.
 | 
				
			||||||
    "sonarjs/no-nested-template-literals": "off",
 | 
					    //    "sonarjs/cognitive-complexity": ["off", MAX_COGNITIVE_COMPLEXITY],
 | 
				
			||||||
 | 
					    //    "sonarjs/no-duplicate-string": "off",
 | 
				
			||||||
 | 
					    //    "sonarjs/no-nested-template-literals": "off",
 | 
				
			||||||
    "@typescript-eslint/ban-ts-comment": "off",
 | 
					    "@typescript-eslint/ban-ts-comment": "off",
 | 
				
			||||||
    "@typescript-eslint/no-unused-vars": [
 | 
					    "@typescript-eslint/no-unused-vars": [
 | 
				
			||||||
        "error",
 | 
					        "error",
 | 
				
			||||||
@ -167,7 +170,7 @@ export default [
 | 
				
			|||||||
    wcconf.configs["flat/recommended"],
 | 
					    wcconf.configs["flat/recommended"],
 | 
				
			||||||
    litconf.configs["flat/recommended"],
 | 
					    litconf.configs["flat/recommended"],
 | 
				
			||||||
    ...tseslint.configs.recommended,
 | 
					    ...tseslint.configs.recommended,
 | 
				
			||||||
    sonar.configs.recommended,
 | 
					    //     sonar.configs.recommended,
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        languageOptions: {
 | 
					        languageOptions: {
 | 
				
			||||||
            parser: tsparser,
 | 
					            parser: tsparser,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,6 @@
 | 
				
			|||||||
import eslint from "@eslint/js";
 | 
					import eslint from "@eslint/js";
 | 
				
			||||||
import tsparser from "@typescript-eslint/parser";
 | 
					import tsparser from "@typescript-eslint/parser";
 | 
				
			||||||
import litconf from "eslint-plugin-lit";
 | 
					import litconf from "eslint-plugin-lit";
 | 
				
			||||||
import sonar from "eslint-plugin-sonarjs";
 | 
					 | 
				
			||||||
import wcconf from "eslint-plugin-wc";
 | 
					import wcconf from "eslint-plugin-wc";
 | 
				
			||||||
import globals from "globals";
 | 
					import globals from "globals";
 | 
				
			||||||
import tseslint from "typescript-eslint";
 | 
					import tseslint from "typescript-eslint";
 | 
				
			||||||
@ -30,7 +29,7 @@ export default [
 | 
				
			|||||||
    wcconf.configs["flat/recommended"],
 | 
					    wcconf.configs["flat/recommended"],
 | 
				
			||||||
    litconf.configs["flat/recommended"],
 | 
					    litconf.configs["flat/recommended"],
 | 
				
			||||||
    ...tseslint.configs.recommended,
 | 
					    ...tseslint.configs.recommended,
 | 
				
			||||||
    sonar.configs.recommended,
 | 
					    //    sonar.configs.recommended,
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        languageOptions: {
 | 
					        languageOptions: {
 | 
				
			||||||
            parser: tsparser,
 | 
					            parser: tsparser,
 | 
				
			||||||
@ -43,9 +42,11 @@ export default [
 | 
				
			|||||||
        rules: {
 | 
					        rules: {
 | 
				
			||||||
            "no-unused-vars": "off",
 | 
					            "no-unused-vars": "off",
 | 
				
			||||||
            "no-console": ["error", { allow: ["debug", "warn", "error"] }],
 | 
					            "no-console": ["error", { allow: ["debug", "warn", "error"] }],
 | 
				
			||||||
            "sonarjs/cognitive-complexity": ["off", 9],
 | 
					            // SonarJS is not yet compatible with ESLint 9.  Commenting these out
 | 
				
			||||||
            "sonarjs/no-duplicate-string": "off",
 | 
					            // until it is.
 | 
				
			||||||
            "sonarjs/no-nested-template-literals": "off",
 | 
					            //    "sonarjs/cognitive-complexity": ["off", 9],
 | 
				
			||||||
 | 
					            //    "sonarjs/no-duplicate-string": "off",
 | 
				
			||||||
 | 
					            //    "sonarjs/no-nested-template-literals": "off",
 | 
				
			||||||
            "@typescript-eslint/ban-ts-comment": "off",
 | 
					            "@typescript-eslint/ban-ts-comment": "off",
 | 
				
			||||||
            "@typescript-eslint/no-unused-vars": [
 | 
					            "@typescript-eslint/no-unused-vars": [
 | 
				
			||||||
                "error",
 | 
					                "error",
 | 
				
			||||||
 | 
				
			|||||||
@ -4,7 +4,7 @@
 | 
				
			|||||||
    "private": true,
 | 
					    "private": true,
 | 
				
			||||||
    "license": "MIT",
 | 
					    "license": "MIT",
 | 
				
			||||||
    "dependencies": {
 | 
					    "dependencies": {
 | 
				
			||||||
        "@goauthentik/api": "^2024.6.3-1724414734",
 | 
					        "@goauthentik/api": "^2024.8.3-1727449099",
 | 
				
			||||||
        "base64-js": "^1.5.1",
 | 
					        "base64-js": "^1.5.1",
 | 
				
			||||||
        "bootstrap": "^4.6.1",
 | 
					        "bootstrap": "^4.6.1",
 | 
				
			||||||
        "formdata-polyfill": "^4.0.10",
 | 
					        "formdata-polyfill": "^4.0.10",
 | 
				
			||||||
 | 
				
			|||||||
@ -35,7 +35,7 @@ describe("ak-quick-actions-card", () => {
 | 
				
			|||||||
            ></ak-quick-actions-card>`,
 | 
					            ></ak-quick-actions-card>`,
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        const component = await $("ak-quick-actions-card");
 | 
					        const component = await $("ak-quick-actions-card");
 | 
				
			||||||
        const items = await component.$$(">>>.pf-c-list li").getElements();
 | 
					        const items = await component.$$(">>>.pf-c-list li");
 | 
				
			||||||
        await expect(Array.from(items).length).toEqual(5);
 | 
					        await expect(Array.from(items).length).toEqual(5);
 | 
				
			||||||
        await expect(await component.$(">>>.pf-c-list li:nth-of-type(4)")).toHaveText(
 | 
					        await expect(await component.$(">>>.pf-c-list li:nth-of-type(4)")).toHaveText(
 | 
				
			||||||
            "Manage users",
 | 
					            "Manage users",
 | 
				
			||||||
 | 
				
			|||||||
@ -39,7 +39,7 @@ export class AkSearchSelectViewDriver {
 | 
				
			|||||||
            );
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        const id = await element.getAttribute("data-ouia-component-id");
 | 
					        const id = await element.getAttribute("data-ouia-component-id");
 | 
				
			||||||
        const menu = await $(`[data-ouia-component-id="menu-${id}"]`).getElement();
 | 
					        const menu = await $(`[data-ouia-component-id="menu-${id}"]`);
 | 
				
			||||||
        return new AkSearchSelectViewDriver(element, menu);
 | 
					        return new AkSearchSelectViewDriver(element, menu);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -52,7 +52,7 @@ export class AkSearchSelectViewDriver {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async listElements() {
 | 
					    async listElements() {
 | 
				
			||||||
        return await this.menu.$$(">>>li").getElements();
 | 
					        return await this.menu.$$(">>>li");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async focusOnInput() {
 | 
					    async focusOnInput() {
 | 
				
			||||||
 | 
				
			|||||||
@ -21,9 +21,7 @@ describe("Search select: Test Input Field", () => {
 | 
				
			|||||||
            html`<ak-search-select-view .options=${longGoodForYouPairs}> </ak-search-select-view>`,
 | 
					            html`<ak-search-select-view .options=${longGoodForYouPairs}> </ak-search-select-view>`,
 | 
				
			||||||
            document.body,
 | 
					            document.body,
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        select = await AkSearchSelectViewDriver.build(
 | 
					        select = await AkSearchSelectViewDriver.build(await $("ak-search-select-view"));
 | 
				
			||||||
            await $("ak-search-select-view").getElement(),
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it("should open the menu when the input is clicked", async () => {
 | 
					    it("should open the menu when the input is clicked", async () => {
 | 
				
			||||||
@ -58,9 +56,7 @@ describe("Search select: Test Input Field", () => {
 | 
				
			|||||||
        expect(await select.open).toBe(false);
 | 
					        expect(await select.open).toBe(false);
 | 
				
			||||||
        expect(await select.menuIsVisible()).toBe(false);
 | 
					        expect(await select.menuIsVisible()).toBe(false);
 | 
				
			||||||
        await browser.keys("A");
 | 
					        await browser.keys("A");
 | 
				
			||||||
        select = await AkSearchSelectViewDriver.build(
 | 
					        select = await AkSearchSelectViewDriver.build(await $("ak-search-select-view"));
 | 
				
			||||||
            await $("ak-search-select-view").getElement(),
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
        expect(await select.open).toBe(true);
 | 
					        expect(await select.open).toBe(true);
 | 
				
			||||||
        expect(await select.menuIsVisible()).toBe(true);
 | 
					        expect(await select.menuIsVisible()).toBe(true);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
				
			|||||||
@ -97,9 +97,7 @@ describe("Search select: event driven startup", () => {
 | 
				
			|||||||
            mock?.dispatchEvent(new Event("resolve"));
 | 
					            mock?.dispatchEvent(new Event("resolve"));
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        expect(await $(">>>ak-search-select-loading-indicator")).not.toBeDisplayed();
 | 
					        expect(await $(">>>ak-search-select-loading-indicator")).not.toBeDisplayed();
 | 
				
			||||||
        select = await AkSearchSelectViewDriver.build(
 | 
					        select = await AkSearchSelectViewDriver.build(await $(">>>ak-search-select-view"));
 | 
				
			||||||
            await $(">>>ak-search-select-view").getElement(),
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
        expect(await select).toBeExisting();
 | 
					        expect(await select).toBeExisting();
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,5 @@
 | 
				
			|||||||
import replace from "@rollup/plugin-replace";
 | 
					import replace from "@rollup/plugin-replace";
 | 
				
			||||||
 | 
					import type { Options } from "@wdio/types";
 | 
				
			||||||
import { cwd } from "process";
 | 
					import { cwd } from "process";
 | 
				
			||||||
import postcssLit from "rollup-plugin-postcss-lit";
 | 
					import postcssLit from "rollup-plugin-postcss-lit";
 | 
				
			||||||
import type { UserConfig } from "vite";
 | 
					import type { UserConfig } from "vite";
 | 
				
			||||||
@ -14,7 +15,7 @@ const maxInstances =
 | 
				
			|||||||
          ? 10
 | 
					          ? 10
 | 
				
			||||||
          : 1;
 | 
					          : 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const config: WebdriverIO.Config = {
 | 
					export const config: Options.Testrunner = {
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // ====================
 | 
					    // ====================
 | 
				
			||||||
    // Runner Configuration
 | 
					    // Runner Configuration
 | 
				
			||||||
@ -42,7 +43,13 @@ export const config: WebdriverIO.Config = {
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    tsConfigPath: "./tsconfig.json",
 | 
					    autoCompileOpts: {
 | 
				
			||||||
 | 
					        autoCompile: true,
 | 
				
			||||||
 | 
					        tsNodeOpts: {
 | 
				
			||||||
 | 
					            project: "./tsconfig.json",
 | 
				
			||||||
 | 
					            transpileOnly: true,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // ==================
 | 
					    // ==================
 | 
				
			||||||
@ -133,11 +140,11 @@ export const config: WebdriverIO.Config = {
 | 
				
			|||||||
    // baseUrl: 'http://localhost:8080',
 | 
					    // baseUrl: 'http://localhost:8080',
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // Default timeout for all waitFor* commands.
 | 
					    // Default timeout for all waitFor* commands.
 | 
				
			||||||
    waitforTimeout: 10000,
 | 
					    waitforTimeout: 12000,
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // Default timeout in milliseconds for request
 | 
					    // Default timeout in milliseconds for request
 | 
				
			||||||
    // if browser driver or grid doesn't send response
 | 
					    // if browser driver or grid doesn't send response
 | 
				
			||||||
    connectionRetryTimeout: 120000,
 | 
					    connectionRetryTimeout: 12000,
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // Default request retries count
 | 
					    // Default request retries count
 | 
				
			||||||
    connectionRetryCount: 3,
 | 
					    connectionRetryCount: 3,
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user