feat: complete mobile Draft handoff (Closes #621)
This commit is contained in:
1 parent
1f0e9fb59d
commit
a68639668c
5 files changed
+58
-5
No files matched your search
@@ -116,6 +116,40 @@ process.stdout.write(JSON.stringify({{
|
||||
}
|
||||
|
||||
|
||||
def test_mobile_task_dock_programmatically_selects_destination_without_running_action():
|
||||
script = f"""
|
||||
const createDock = require({json.dumps(str(DOCK))});
|
||||
const calls = [];
|
||||
const makeButton = () => ({{
|
||||
attributes: {{}},
|
||||
setAttribute(name, value) {{ this.attributes[name] = value; }},
|
||||
removeAttribute(name) {{ delete this.attributes[name]; }},
|
||||
}});
|
||||
const buttons = {{work:makeButton(), drafts:makeButton()}};
|
||||
const dock = createDock({{
|
||||
nav:{{}}, buttons,
|
||||
actions:{{work:()=>calls.push('work'), drafts:()=>calls.push('drafts')}},
|
||||
}});
|
||||
const selected = dock.select('drafts');
|
||||
process.stdout.write(JSON.stringify({{
|
||||
selected, calls,
|
||||
work:buttons.work.attributes['aria-current'] || null,
|
||||
drafts:buttons.drafts.attributes['aria-current'] || null,
|
||||
}}));
|
||||
"""
|
||||
result = subprocess.run(
|
||||
["node", "-e", script], capture_output=True, text=True
|
||||
)
|
||||
|
||||
assert result.returncode == 0, result.stderr
|
||||
assert json.loads(result.stdout) == {
|
||||
"selected": True,
|
||||
"calls": [],
|
||||
"work": None,
|
||||
"drafts": "page",
|
||||
}
|
||||
|
||||
|
||||
def test_mobile_task_dock_keeps_today_label_separate_from_attention_count():
|
||||
script = f"""
|
||||
const createDock = require({json.dumps(str(DOCK))});
|
||||
|
||||
@@ -151,6 +151,12 @@ async def test_mobile_composer_exposes_cold_offline_save_and_account_safe_resume
|
||||
assert "createUnfiledCaptures({" in html
|
||||
assert "getCaptureLogin: () => String(lastContextSnapshot?.user?.login || '').trim()" in html
|
||||
assert "unfiledCaptures.save(captureDraft)" in html
|
||||
assert "const savedCapture = await unfiledCaptures.save(captureDraft)" in html
|
||||
assert "mobileTaskDock.select('drafts')" in html
|
||||
assert "data-capture-id=\"' + escapeHtml(item.capture_id) + '\"" in html
|
||||
assert "requestAnimationFrame(() =>" in html
|
||||
assert "savedCard?.scrollIntoView({block:'nearest'})" in html
|
||||
assert "Saved to Drafts. Choose a repository when you’re ready to file it." in html
|
||||
assert "await unfiledCaptures.resume(item.capture_id, activeFlushLogin)" in html
|
||||
assert "await createIssueAttachmentController.serialize()" in html
|
||||
assert "createUnfiledAttachmentStore()" in html
|
||||
@@ -160,6 +166,8 @@ async def test_mobile_composer_exposes_cold_offline_save_and_account_safe_resume
|
||||
assert "issueCapture.saveDraft(resumed)" in html
|
||||
assert "item.kind === 'unfiled-issue'" in html
|
||||
assert '.create-issue-actions button { min-height:44px;' in html
|
||||
assert '.draft-card:focus-visible' in html
|
||||
assert 'scroll-margin-bottom:calc(76px + env(safe-area-inset-bottom))' in html
|
||||
assert '@media(max-width:320px)' in html
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user