Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
050ac7d
Convert dashboard to functional (#534)
mshriver Jan 9, 2025
ea53919
Convert IbutsuHeader to react functional (#535)
mshriver Jan 22, 2025
174ed6b
Convert FileUpload to functional (#540)
mshriver Jan 22, 2025
b32c727
Update sidebar, use context (#541)
mshriver Jan 22, 2025
bbd5b38
Convert ReportBuilder to functional (#542)
mshriver Jan 22, 2025
049d935
Convert FilterTable and MetaTable (#544)
mshriver Jan 22, 2025
789782f
Convert AddTokenModal and DeleteModal to functional (#545)
mshriver Jan 23, 2025
a5f65df
Convert UserDropdown to Functional (#543)
Fynardo Jan 23, 2025
94da3c2
Convert UserDropdown to Functional - Followup (#548)
Fynardo Jan 27, 2025
d6eae59
Fix bug, useState instead of useContext (#549)
mshriver Jan 27, 2025
75cc19a
Convert TabTitle to functional (#553)
mshriver Feb 11, 2025
b43e9c3
Convert NewDashboardModal to functional (#552)
mshriver Feb 11, 2025
c0f2b76
Convert EditWidgetModal (#551)
mshriver Feb 11, 2025
06e5a5c
Convert custom view component (#554)
mshriver Feb 11, 2025
6c6f9c3
Convert NewWidgetWizard (#556)
mshriver Feb 11, 2025
c4c3567
Refactor ParamDropdown and WidgetHeader (#555)
mshriver Feb 11, 2025
aa5fb96
Convert MultiValueInput (#557)
mshriver Feb 11, 2025
a3e32e0
convert RunSummary (#558)
mshriver Feb 11, 2025
1c0fed0
Convert TableStates (#559)
mshriver Feb 12, 2025
cc413ac
Convert ResultView (#550)
mshriver Feb 12, 2025
d287638
Convert Importance by Component Widget (#560)
Fynardo Feb 13, 2025
dd987b6
Add more eslint rules (#566)
LightOfHeaven1994 Feb 13, 2025
7fd313e
Convert ProjectEdit (#563)
mshriver Feb 13, 2025
a296ed5
Convert TestHistoryTable (#562)
mshriver Feb 17, 2025
ca154bd
Use select for timeRange history table (#569)
LightOfHeaven1994 Feb 17, 2025
f6347a7
Convert Admin Page (#570)
mshriver Feb 17, 2025
4ad9999
Convert UserEdit to functional (#571)
mshriver Feb 18, 2025
ca58977
Convert UserProfile (#574)
mshriver Feb 19, 2025
74a98b8
Convert projectlist (#568)
mshriver Feb 19, 2025
3f1f162
Convert EmptyObject (#576)
mshriver Feb 19, 2025
775d884
Convert UserTokens (#573)
mshriver Feb 19, 2025
057067c
Convert UserList (#575)
mshriver Feb 19, 2025
7093218
Convert ResultAggregator widget (#572)
Fynardo Feb 25, 2025
74510d4
Convert ClassifyFailureTable to functional (#546)
mshriver Feb 26, 2025
e8b9b98
Convert resultSummary Widget (#578)
Fynardo Feb 26, 2025
8ce68be
Added logic for different keycloak auth paths (#567) (#581)
mshriver Feb 26, 2025
b5a7d6c
AccessibilityAnalysis (#582)
mshriver Feb 26, 2025
cc04d74
Convert Accessibility dashboard (#585)
mshriver Feb 27, 2025
4d54307
Convert CompareRunsView (#586)
mshriver Mar 3, 2025
e8e94c5
Convert JenkinsJob View (#588)
mshriver Mar 5, 2025
e3bf9c5
Convert GenericArea Widget (#591)
mshriver Mar 6, 2025
1378b5f
Convert Jenkins Job Analysis view (#589)
mshriver Mar 6, 2025
7ad4f92
Convert Ibutsu Page (#594)
hugohezel Mar 7, 2025
b284793
Convert GenericBar Widget (#593)
hugohezel Mar 7, 2025
86f49b6
Modified keycloak auth path logic (#590)
wcater803 Mar 5, 2025
fd121e6
Clean up branch conflict from keycloak changes (#595)
mshriver Mar 7, 2025
e190848
Convert FilterHeatmapWidget (#592)
mshriver Mar 10, 2025
6f0512f
Add sourcery config (#599)
mshriver Mar 14, 2025
11b2567
React pattern updates (#598)
mshriver Mar 17, 2025
4c4e4b9
React pattern updates, 2 (#600)
mshriver Mar 18, 2025
047d915
Convert Login (#601)
mshriver Mar 19, 2025
d6946b8
Fix checking for required parameters in Create Widget Wizard for auto…
hugohezel Mar 19, 2025
4aca813
Convert RunList to functional (#602)
mshriver Mar 19, 2025
48e6da6
Replace react-json with patternfly codeeditor (#606)
mshriver Mar 20, 2025
4792eea
Convert Run to functional
mshriver Mar 19, 2025
d11d22b
Remove react-json-tree
mshriver Mar 20, 2025
39d6bfb
fix(IQE-3441): Fix adding values to the MultiValueInput
hugohezel Mar 21, 2025
2989a1c
Convert ResultList to functional
mshriver Mar 19, 2025
520b259
Convert Result to functional
mshriver Mar 21, 2025
f90f5f7
Add react-error-boundary
mshriver Mar 21, 2025
5bea144
Convert Reset Password
mshriver Mar 21, 2025
c21bcad
Convert ForgotPassword
mshriver Mar 21, 2025
f7931ac
fix(IQE-3448): Show loading state when accessing the Run's details page
hugohezel Mar 24, 2025
43bae09
fix(IQE-3443): Apply current selection to the Dashboard selector
hugohezel Mar 24, 2025
af2a277
fix(IQE-3444): Error fetching when loading user profile page
hugohezel Mar 21, 2025
29e817a
Remove ElementWrapper from admin
mshriver Mar 18, 2025
dcf6609
Remove unused location from SignUp
mshriver Mar 19, 2025
b9f9010
Convert App and IbutsuPage
mshriver Mar 21, 2025
773f32b
Remove ElementWrapper component
mshriver Mar 24, 2025
2b32322
Consistently use `_` for unsused JS vars
mshriver Mar 24, 2025
08a535d
Doc title and function syntax consistency
mshriver Mar 24, 2025
f8b7484
Remove eventemitter dependency
mshriver Mar 24, 2025
79ec7ba
fix(IQE-3467): Remove infinite cycle of fetching test results
hugohezel Mar 24, 2025
4ef26ba
Added a spinner while the table is loading results
Fynardo Apr 1, 2025
e2d8242
Make resultSelection a text so it shows the placeholder text
Fynardo Apr 1, 2025
e6c9ca2
revert resultSelection to be a list and fix the placeholdertext
Fynardo Apr 2, 2025
507db49
fix(IQE-3462): Add skeleton loading to the edit widget modal
hugohezel Apr 3, 2025
5fd21bd
fix(IQE-3454): Enable scrolling of dropdowns on Edit Project page
hugohezel Apr 15, 2025
1060db6
fix(IQE-3502): Be able to trim slashes from both begging and end in U…
hugohezel Apr 17, 2025
3d80973
Custom useTabHook for Tab Navigation (#621)
mshriver Apr 19, 2025
61c397d
Create useUserFilter, Update Table Patterns on Admin UserList (#623)
mshriver Apr 19, 2025
c06ff10
Update via yarn
mshriver Apr 20, 2025
43b7d7c
Somehow this is making the rule disable work?
mshriver Apr 20, 2025
34e5c31
IbutsuHeader - use default dashboard in navigate
mshriver Apr 20, 2025
690c089
Fix default dashboard loading
mshriver Apr 20, 2025
9b2559c
Include jsx-runtime for eslint react
mshriver Apr 20, 2025
8c0142c
Ignore eslint on build
mshriver Apr 20, 2025
226e7e2
Update eslint config
mshriver Apr 20, 2025
47abba0
Add prettier to eslint
mshriver Apr 21, 2025
bc87958
Apply prettier fixes
mshriver Apr 21, 2025
6e5d16c
Use skipHash on ResultView, destructure props
mshriver Apr 21, 2025
1730cfd
Fix Owner filtering on ProjectEdit (#628)
mshriver Apr 22, 2025
7e7d0a5
fix(IQE-3525): Expand the click area to the entire item area in User …
hugohezel Apr 23, 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
45 changes: 45 additions & 0 deletions .sourcery.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
ignore:
- .git
- venv
- .venv
- .ibutsu-env
- env
- .env
- .tox
- frontend/node_modules
- vendor
- .postgres-data
- .redis-data
- .ruff_cache
- .jwtsecret
- .pytest_cache
- .mypy_cache

rule_settings:
enable: [default]
disable: []
rule_types:
- refactoring
- suggestion
- comment
python_version: '3.9'

rules: []

metrics:
quality_threshold: 25.0

github:
labels: []
ignore_labels:
- sourcery-ignore
request_review: author
sourcery_branch: sourcery/{base_branch}

clone_detection:
min_lines: 4
min_duplicates: 3
identical_clones_only: false

proxy:
no_ssl_verify: false
4 changes: 4 additions & 0 deletions frontend/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore artifacts:
build
coverage
node_modules
3 changes: 3 additions & 0 deletions frontend/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"singleQuote": true
}
7 changes: 5 additions & 2 deletions frontend/bin/write-version-file.cjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
#!/usr/bin/env node

const fse = require('fs-extra')
const fse = require('fs-extra');

let packageData = JSON.parse(fse.readFileSync('package.json'));
fse.writeFileSync('public/version.json', JSON.stringify({'version': packageData.version}));
fse.writeFileSync(
'public/version.json',
JSON.stringify({ version: packageData.version }),
);
175 changes: 81 additions & 94 deletions frontend/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,103 +1,90 @@
// eslint.config.mjs
import cypress from 'eslint-plugin-cypress';
import react from 'eslint-plugin-react';
import prettier from 'eslint-plugin-prettier';
import reactPlugin from 'eslint-plugin-react';
import unusedImports from 'eslint-plugin-unused-imports';
import { fileURLToPath } from 'node:url';
import globals from 'globals';
import path from 'node:path';
import babelParser from '@babel/eslint-parser';
import { defineConfig, globalIgnores } from 'eslint/config';
import reactHooksPlugin from 'eslint-plugin-react-hooks';
import js from '@eslint/js';
import { FlatCompat } from '@eslint/eslintrc';
import hooksPlugin from 'eslint-plugin-react-hooks';
import pkg from '@babel/eslint-parser';
import pluginCypress from 'eslint-plugin-cypress/flat';
import eslintPluginJsxA11y from 'eslint-plugin-jsx-a11y';
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';

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

export default [
{
files: ['src/*', 'cypress/*'],
ignores: ['node_modules/*'],
export default defineConfig([
globalIgnores(
['build/**/*', 'node_modules/'],
'Ignore build dir and node_modules',
),
pluginCypress.configs.recommended,
reactHooksPlugin.configs['recommended-latest'],
reactPlugin.configs.flat.recommended,
reactPlugin.configs.flat['jsx-runtime'],
js.configs.recommended,
pluginCypress.configs.recommended,
eslintPluginJsxA11y.flatConfigs.recommended,
{
files: ['src/*', 'cypress/*', 'bin/*'],
plugins: {
'unused-imports': unusedImports, // not flat config compatible
reactPlugin,
reactHooksPlugin,
eslintPluginJsxA11y,
pluginCypress,
},
...compat.extends(
'eslint:recommended',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'plugin:cypress/recommended',
'prettier',
),
{
plugins: {
cypress,
prettier,
react,
'unused-imports': unusedImports,
'react-hooks': hooksPlugin,
},
languageOptions: {
globals: {
...globals.browser,
...globals.node,
...globals.cypress,
es202: true,
},
parser: pkg,
parserOptions: {
ecmaVersion: 2020,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
requireConfigFile: false,
plugins: [
'@babel/plugin-transform-class-properties',
'@babel/plugin-transform-private-methods',
'@babel/plugin-syntax-jsx',
'@babel/plugin-syntax-flow'
],
babelOptions: {
presets: [
'@babel/preset-flow',
'@babel/preset-env',
'@babel/preset-react',
]
},
},
linterOptions: {
reportUnusedDisableDirectives: 'error',
},
languageOptions: {
...reactPlugin.configs.flat.recommended.languageOptions,
globals: {
...globals.browser,
...globals.node,
...globals.cypress,
es2020: true,
},
parser: babelParser,
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
rules: {
'cypress/no-assigning-return-values': 'error',
'cypress/no-unnecessary-waiting': 'error',
'cypress/assertion-before-screenshot': 'warn',
'cypress/no-force': 'warn',
'cypress/no-async-tests': 'error',
'cypress/no-async-before': 'error',
'cypress/no-pause': 'error',
'react/jsx-curly-brace-presence': [
'error',
{
props: 'never',
children: 'never',
},
],

'arrow-body-style': ['error', 'as-needed'],
'react/react-in-jsx-scope': 'off',
camelcase: 'off',
'spaced-comment': 'error',
quotes: ['warn', 'single'],
'no-duplicate-imports': 'error',
'unused-imports/no-unused-imports': 'error',
'unused-imports/no-unused-vars': ['warn'],
requireConfigFile: false,
plugins: [
'@babel/plugin-transform-class-properties',
'@babel/plugin-transform-private-methods',
'@babel/plugin-syntax-jsx',
'@babel/plugin-syntax-flow',
],
babelOptions: {
presets: [
'@babel/preset-flow',
'@babel/preset-env',
'@babel/preset-react',
],
},
settings: {
react:{
version: 'detect',
}
},
},
rules: {
'react/jsx-curly-brace-presence': [
'error',
{
props: 'never',
children: 'never',
},
}
]
],
'react/react-in-jsx-scope': 'off',
camelcase: 'off',
quotes: ['warn', 'single'],
'no-duplicate-imports': 'error',
'unused-imports/no-unused-imports': 'error',
'unused-imports/no-unused-vars': ['warn'],
},
settings: {
react: {
version: 'detect',
},
},
},
eslintPluginPrettierRecommended,
]);
2 changes: 1 addition & 1 deletion frontend/jest.polyfills.js → frontend/jest.polyfills.cjs
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
// jest.polyfills.js
// jest.polyfills.cjs
global.TextEncoder = require('util').TextEncoder;
33 changes: 22 additions & 11 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,30 +8,32 @@
"@monaco-editor/react": "^4.6.0",
"@patternfly/patternfly": "^5.2.1",
"@patternfly/react-charts": "^7.2.2",
"@patternfly/react-code-editor": "5.4.18",
"@patternfly/react-core": "^5.2.3",
"@patternfly/react-icons": "^5.2.1",
"@patternfly/react-styles": "^5.2.1",
"@patternfly/react-table": "^5.2.4",
"@react-oauth/google": "^0.12.1",
"@types/react": "^18.0.0",
"enzyme": "^3.11.0",
"eslint-config": "^0.3.0",
"fs-extra": "^11.2.0",
"globals": "^15.14.0",
"keycloak-js": "^19.0.3",
"monaco-editor": "^0.47.0",
"prop-types": "^15.8.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-error-boundary": "^5.0.0",
"react-heatmap-grid": "^0.9.0",
"react-json-tree": "^0.19.0",
"react-linkify": "^1.0.0-alpha",
"react-password-strength-bar": "^0.4.1",
"react-router-dom": "^6.28.0",
"react-scripts": "^5.0.1",
"react-simple-oauth2-login": "^0.5.4",
"react-toastify": "^11.0.2",
"serve": "^12.0.1",
"typescript": "^4.9.5",
"wolfy87-eventemitter": "^5.2.9"
"typescript": "^4.9.5"
},
"devDependencies": {
"@babel/core": "^7.24.7",
Expand All @@ -43,27 +45,33 @@
"@babel/plugin-transform-private-methods": "^7.24.7",
"@babel/plugin-transform-private-property-in-object": "^7.24.7",
"@babel/plugin-transform-react-jsx": "^7.14.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-flow": "^7.24.7",
"@babel/preset-react": "^7.24.7",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.25.0",
"@testing-library/dom": "^10.4.0",
"@testing-library/react": "^14.3.1",
"cypress": "^10.11.0",
"eslint": "^9.17.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-prettier": "^10.1.2",
"eslint-plugin-cypress": "^4.1.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-prettier": "^5.2.6",
"eslint-plugin-react": "^7.37.2",
"eslint-plugin-react-hooks": "^5.1.0",
"eslint-plugin-unused-imports": "^4.1.4",
"prettier": "^3.4.2"
"prettier": "^3.5.3"
},
"scripts": {
"start": "serve -s build -l tcp://0.0.0.0:8080",
"build": "./bin/write-version-file.cjs && react-scripts build",
"test": "./bin/write-version-file.cjs && react-scripts test --transformIgnorePatterns \"node_modules/(?!@patternfly)/\" && cypress run --component",
"start": "serve -s build -l tcp://0.0.0.0:3000",
"build": "./bin/write-version-file.cjs && DISABLE_ESLINT_PLUGIN=true react-scripts build",
"test": "./bin/write-version-file.cjs && react-scripts test --transformIgnorePatterns \"node_modules/(?!@patternfly)/\"",
"eject": "react-scripts eject",
"devserver": "./bin/write-version-file.cjs && CI=true react-scripts start",
"lint": "eslint"
"devserver": "./bin/write-version-file.cjs && CI=true DISABLE_ESLINT_PLUGIN=true react-scripts start",
"lint": "eslint",
"format": "prettier \"src/**/*.{js,html}\" --write",
"format-check": "prettier \"src/**/*.{js,html}\" --check"
},
"browserslist": {
"production": [
Expand All @@ -79,5 +87,8 @@
},
"bin": {
"write-version-file": "./bin/write-version-file.cjs"
},
"jest": {
"resetMocks": false
}
}
4 changes: 2 additions & 2 deletions frontend/public/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
// at container runtime with ENV variables.
window.settings = {
serverUrl: 'http://127.0.0.1:8080/api',
environment: 'development'
}
environment: 'development',
};
Loading
Loading