v9.2 follow-up: skip ms-word on Mac by default + sideload notes
- Web: ยิง ms-word:ofe คู่กับการดาวน์โหลดเฉพาะ non-Mac โดย default — บน Mac ไม่ยิงเพราะ Word 16.101+ เมิน URL แล้วเด้งหน้าเลือกไฟล์ ทุกครั้งจนรำคาญ (override ด้วย NUXT_PUBLIC_OPEN_IN_WORD=on|off) - CLAUDE.md: จดสูตร sideload บน Mac — ปิด Word ก่อน npm start (Word อ่าน manifest ตอน startup เท่านั้น), ปล่อย dev server รันทิ้ง, แก้โค้ดใช้ hot reload - Spec/plan sync + web 60/60 + build; QA reviewer PASS (1 round, minors 3 — แก้ 2 ปฏิเสธ 1 พร้อมเหตุผล) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
parent
ee4d8573ee
commit
83a949cfa0
7 changed files with 52 additions and 10 deletions
|
|
@ -20,6 +20,8 @@ function mount() {
|
|||
|
||||
beforeEach(() => {
|
||||
vi.stubGlobal('useApi', () => ({ apiJson }))
|
||||
// default: auto — happy-dom ไม่ใช่ Mac UA จึงยิง ms-word ควบคู่ (แต่ละ test ที่ต้องการก็ stub ทับได้)
|
||||
vi.stubGlobal('useRuntimeConfig', () => ({ public: { openInWord: '' } }))
|
||||
tab = { opener: {}, closed: false, location: { replace }, close }
|
||||
vi.spyOn(window, 'open').mockReturnValue(tab as unknown as Window)
|
||||
})
|
||||
|
|
@ -130,4 +132,28 @@ describe('version open lifecycle', () => {
|
|||
expect(saved[1].href).toBe('https://files.example/second.docx')
|
||||
expect(state.fallbackUrl.value).toBe('https://files.example/second.docx')
|
||||
})
|
||||
it('OPEN_IN_WORD=off: ไม่ยิง ms-word เลย — ดาวน์โหลดอย่างเดียว (Word 16.101+ บน Mac เด้งหน้าเลือกไฟล์ทุกครั้ง)', () => {
|
||||
vi.stubGlobal('useRuntimeConfig', () => ({ public: { openInWord: 'off' } }))
|
||||
const assign = vi.spyOn(window.location, 'assign').mockImplementation(() => {})
|
||||
vi.spyOn(HTMLAnchorElement.prototype, 'click').mockImplementation(() => {})
|
||||
const state = mount()
|
||||
state.openDocxUrl('https://files.example/draft.docx')
|
||||
expect(assign).not.toHaveBeenCalled()
|
||||
expect(state.openNotice.value).not.toContain('อัตโนมัติ') // ข้อความไม่เกี้ยวเรื่องเปิดอัตโนมัติ
|
||||
})
|
||||
it('auto บน Mac: ไม่ยิง ms-word (default), override on แล้วยิงแม้บน Mac', () => {
|
||||
vi.spyOn(window.navigator, 'platform', 'get').mockReturnValue('MacIntel')
|
||||
let state = mount() // default '' → auto → Mac = ไม่ยิง
|
||||
const assign = vi.spyOn(window.location, 'assign').mockImplementation(() => {})
|
||||
vi.spyOn(HTMLAnchorElement.prototype, 'click').mockImplementation(() => {})
|
||||
state.openDocxUrl('https://files.example/draft.docx')
|
||||
expect(assign).not.toHaveBeenCalled()
|
||||
|
||||
app.unmount()
|
||||
host.remove()
|
||||
vi.stubGlobal('useRuntimeConfig', () => ({ public: { openInWord: 'on' } }))
|
||||
state = mount()
|
||||
state.openDocxUrl('https://files.example/draft.docx')
|
||||
expect(assign).toHaveBeenCalledWith('ms-word:ofe|u|https://files.example/draft.docx')
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue