Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
3a309f4
Add Prettier Rules For Formatting (#43)
alisonscheng May 15, 2026
4ce30f9
add tiled hooks, tiled plot, xas align, xas scan components
SeijDeLeon Jun 9, 2026
c3edbb8
remove console log
SeijDeLeon Jun 9, 2026
7440247
add layout options to plotly via prop
SeijDeLeon Jun 9, 2026
c8362a4
revise tiled scatter hook to use new api hooks
SeijDeLeon Jun 9, 2026
17ced87
add view for when not fully connected, add title
SeijDeLeon Jun 9, 2026
157a6ab
add polling to query and show queue status
SeijDeLeon Jun 9, 2026
664d774
default text color and hidden overflow on long metadata
SeijDeLeon Jun 9, 2026
23a78cf
styling, show bluesky run id
SeijDeLeon Jun 9, 2026
5cf098a
add exposure controls
SeijDeLeon Jun 9, 2026
4de704c
input number width set
SeijDeLeon Jun 9, 2026
d11e4fe
fix active run path qserver
SeijDeLeon Jun 9, 2026
b1cee55
allow config prop to plotly
SeijDeLeon Jun 10, 2026
37ad66c
linter fixes
SeijDeLeon Jun 10, 2026
45cae30
prettier format fix
SeijDeLeon Jun 10, 2026
6dec9ff
typescript type fix
SeijDeLeon Jun 10, 2026
985a270
allow hublayout to prop drill header img class
SeijDeLeon Jun 10, 2026
9477082
build error fixes
SeijDeLeon Jun 10, 2026
9226749
fix histogram tests
SeijDeLeon Jun 10, 2026
20eef98
add new tests
SeijDeLeon Jun 10, 2026
894d5b3
linter fixes
SeijDeLeon Jun 10, 2026
cc07276
change duration to silence warning
SeijDeLeon Jun 10, 2026
75dc4a6
update packages
SeijDeLeon Jun 10, 2026
1474f6d
add lineplot to dev page, add initialpath prop
SeijDeLeon Jun 10, 2026
11c1324
hardcode plot heights to prevent layout shift in experiments
SeijDeLeon Jun 11, 2026
1d23027
new storybook docs for confiig providers and api
SeijDeLeon Jun 11, 2026
1ee7fe8
lint fix
SeijDeLeon Jun 11, 2026
a679919
reload newest tiled and update story
SeijDeLeon Jun 11, 2026
740728c
add plot maker story, adjust styles
SeijDeLeon Jun 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
59 changes: 57 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,15 @@ jobs:
run: npm ci

- name: Run linting
run: npm run lint
run: |
npm run lint 2>&1 | tee lint-output.txt
exit ${PIPESTATUS[0]}
continue-on-error: true

- name: Run formatting check
run: |
npm run format 2>&1 | tee format-output.txt
exit ${PIPESTATUS[0]}
continue-on-error: true

- name: Run type checking and build
Expand Down Expand Up @@ -91,6 +99,8 @@ jobs:
path: |
coverage/
test-results/
lint-output.txt
format-output.txt
retention-days: 30

test-summary:
Expand All @@ -99,10 +109,32 @@ jobs:
if: always() && github.event_name == 'pull_request'

steps:
- name: Download test artifacts
uses: actions/download-artifact@v4
with:
name: test-results-node-20.x
continue-on-error: true

- name: Comment PR with test summary
uses: actions/github-script@v6
with:
script: |
const fs = require('fs');

let lintOutput = '';
try {
lintOutput = fs.readFileSync('lint-output.txt', 'utf8').trim();
} catch (e) {
// lint output not available
}

let formatOutput = '';
try {
formatOutput = fs.readFileSync('format-output.txt', 'utf8').trim();
} catch (e) {
// format output not available
}

const testStatus = '${{ needs.test.result }}';
const emoji = testStatus === 'success' ? '✅' : '❌';
const message = testStatus === 'success' ? 'All tests passed!' : 'Some tests failed.';
Expand All @@ -118,17 +150,39 @@ jobs:
const steps = testJob ? testJob.steps : [];

const lintStep = steps.find(step => step.name === 'Run linting');
const formatStep = steps.find(step => step.name === 'Run formatting check');
const buildStep = steps.find(step => step.name === 'Run type checking and build');
const testSuitesStep = steps.find(step => step.name === 'Run specific test suites');

const lintStatus = lintStep ? (lintStep.conclusion === 'success' ? '✅' : '❌') : '❓';
const formatStatus = formatStep ? (formatStep.conclusion === 'success' ? '✅' : '❌') : '❓';
const buildStatus = buildStep ? (buildStep.conclusion === 'success' ? '✅' : '❌') : '❓';
const testStepStatus = testSuitesStep ? (testSuitesStep.conclusion === 'success' ? '✅' : '❌') : '❓';

const lintText = lintStep ?
(lintStep.conclusion === 'success' ? 'ESLint passed' : 'ESLint failed') :
'ESLint status unknown';

let lintSection = '';
if (lintOutput && lintStep && lintStep.conclusion !== 'success') {
const truncated = lintOutput.length > 3000
? lintOutput.substring(0, 3000) + '\n...(output truncated)'
: lintOutput;
lintSection = `\n\n<details>\n<summary>ESLint Errors</summary>\n\n\`\`\`\n${truncated}\n\`\`\`\n</details>`
}

const formatText = formatStep ?
(formatStep.conclusion === 'success' ? 'Prettier passed' : 'Prettier failed') :
'Formatting status unknown';

let formatSection = '';
if (formatOutput && formatStep && formatStep.conclusion !== 'success') {
const truncated = formatOutput.length > 3000
? formatOutput.substring(0, 3000) + '\n...(output truncated)'
: formatOutput;
formatSection = `\n\n<details>\n<summary>Prettier Errors</summary>\n\n\`\`\`\n${truncated}\n\`\`\`\n</details>`
}

const buildText = buildStep ?
(buildStep.conclusion === 'success' ? 'TypeScript compilation successful' : 'TypeScript compilation failed') :
'Build status unknown';
Expand All @@ -153,7 +207,8 @@ jobs:
`- ${testStepStatus} **Misc** - IFrame, GoogleDoc, SelectDropdown, ComponentViewer, ComponentViewerUtils`,
``,
`**Test Environment:** Node.js 20.x`,
`**Linting:** ${lintStatus} ${lintText}`,
`**Linting:** ${lintStatus} ${lintText}${lintSection}`,
`**Formatting:** ${formatStatus} ${formatText}${formatSection}`,
`**Type Checking:** ${buildStatus} ${buildText}`,
`**Build:** ${buildStatus} Production build successful`,
`**Tests:** ${testStepStatus} ${testText}`
Expand Down
7 changes: 7 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"semi": true,
"singleQuote": true,
"tabWidth": 4,
"printWidth": 100,
"trailingComma": "all"
}
2 changes: 2 additions & 0 deletions .storybook/preview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ const preview: Preview = {
"About",
"Documentation", [
"Installation",
"Configuration",
"BackendSetup",
"API Hooks",
],
"Bluesky Components", [
'ReactEDM', [
Expand Down
5 changes: 4 additions & 1 deletion eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import storybook from 'eslint-plugin-storybook'
import tseslint from 'typescript-eslint'
import prettier from 'eslint-config-prettier'

export default tseslint.config(
{ ignores: ['dist', 'src/components/ReactEDM/**', 'src/components/Tabs/**', 'src/components/ui/**'] },
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
extends: [js.configs.recommended, ...tseslint.configs.recommended, prettier],
files: ['**/*.{ts,tsx}'],
languageOptions: {
ecmaVersion: 2020,
Expand All @@ -33,4 +35,5 @@ export default tseslint.config(
],
},
},
...storybook.configs['flat/recommended'],
)
Loading
Loading