mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-11-14 10:39:32 +01:00
fix: let the path picker's error status wrap (release review)
The cases-folder refusal grew to 143 characters, and the status line is one line with an ellipsis and no title, so at 513px on desktop it ended at "or make the case with Ad..." and lost the instruction. .path-picker-status.error now wraps: 2 lines on desktop, 4 on a phone, measured clear in Chromium at both, and it covers the picker's other refusals too. Tests: a pin on that rule (fails without the fix), and the option check now reads each picker's whole options object instead of a fixed 400 characters, which stopped short of the container-workdir picker's 829. Retitled to say what it checks: Create New has the flag too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
dbb3202161
commit
3ef65d7c74
2 files changed
+24
-12
No files matched your search
@@ -14,6 +14,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
const PUBLIC = resolve(import.meta.dirname, '../src/web/public');
|
||||
const accessoryJs = readFileSync(resolve(PUBLIC, 'keyboard-accessory.js'), 'utf8');
|
||||
const sessionUiJs = readFileSync(resolve(PUBLIC, 'session-ui.js'), 'utf8');
|
||||
const stylesCss = readFileSync(resolve(PUBLIC, 'styles.css'), 'utf8');
|
||||
|
||||
const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', { url: 'https://localhost/' });
|
||||
const jsdomWindow = dom.window as unknown as Window & typeof globalThis;
|
||||
@@ -166,22 +167,31 @@ describe('PathPicker New folder', () => {
|
||||
expect(doc.querySelector('.path-picker-overlay')).not.toBeNull();
|
||||
});
|
||||
|
||||
// A picker's whole options object: a fixed window stops short of the container picker's long one.
|
||||
const pickerOptions = (name: string) => {
|
||||
const start = sessionUiJs.indexOf(`${name}() {`);
|
||||
expect(start, name).toBeGreaterThan(-1);
|
||||
const open = sessionUiJs.indexOf('PathPicker.open', start);
|
||||
expect(open, name).toBeGreaterThan(start);
|
||||
const end = sessionUiJs.indexOf('\n });', open);
|
||||
expect(end, name).toBeGreaterThan(open);
|
||||
return sessionUiJs.slice(open, end);
|
||||
};
|
||||
|
||||
it("is on for Create New's custom folder picker too", () => {
|
||||
const start = sessionUiJs.indexOf('openNewCasePathPicker() {');
|
||||
expect(sessionUiJs.slice(start, sessionUiJs.indexOf('PathPicker.open', start) + 400)).toContain(
|
||||
'allowNewFolder: true'
|
||||
);
|
||||
expect(pickerOptions('openNewCasePathPicker')).toContain('allowNewFolder: true');
|
||||
});
|
||||
|
||||
it('is on for Link Existing and off for the other session-ui pickers', () => {
|
||||
const block = (name: string) => {
|
||||
const start = sessionUiJs.indexOf(`${name}() {`);
|
||||
expect(start, name).toBeGreaterThan(-1);
|
||||
return sessionUiJs.slice(start, sessionUiJs.indexOf('PathPicker.open', start) + 400);
|
||||
};
|
||||
expect(block('openLinkCasePathPicker')).toContain('allowNewFolder: true');
|
||||
it('is on for Link Existing and off for the Clone and Docker pickers', () => {
|
||||
expect(pickerOptions('openLinkCasePathPicker')).toContain('allowNewFolder: true');
|
||||
for (const other of ['openDockerWorkspacePathPicker', 'openDockerWorkdirPicker', 'openCloneCasePathPicker']) {
|
||||
expect(block(other), other).not.toContain('allowNewFolder');
|
||||
expect(pickerOptions(other), other).not.toContain('allowNewFolder');
|
||||
}
|
||||
});
|
||||
|
||||
it('lets an error wrap: the status line has no other way to show the rest of a long refusal', () => {
|
||||
const start = stylesCss.indexOf('.path-picker-status.error {');
|
||||
expect(start).toBeGreaterThan(-1);
|
||||
expect(stylesCss.slice(start, stylesCss.indexOf('}', start))).toContain('white-space: normal');
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user