A merged index that failed to load made mergeIndex throw, and the failed instance stayed in the list, so search stopped working for every index. Indexes passed with `optional: true` are now dropped with a warning when they fail to load, and search runs over the indexes that did load. Fixes #887
34 lines
1.2 KiB
YAML
34 lines
1.2 KiB
YAML
name: Multisite Search > Pagefind skips an optional index that fails to load
|
|
steps:
|
|
- ref: ./background.toolproof.yml
|
|
- macro: I run Pagefind with "--site root/website_a"
|
|
- step: stdout should contain "Running Pagefind"
|
|
- step: The file "root/website_a/pagefind/pagefind.js" should not be empty
|
|
- macro: I run Pagefind with "--site root/website_b"
|
|
- step: stdout should contain "Running Pagefind"
|
|
- step: The file "root/website_b/pagefind/pagefind.js" should not be empty
|
|
- step: I serve the directory "root"
|
|
- step: In my browser, I load "/"
|
|
- step: In my browser, I evaluate {js}
|
|
js: >-
|
|
let pagefind = await import("/website_a/pagefind/pagefind.js");
|
|
|
|
await pagefind.mergeIndex("/website_c/pagefind/", { optional: true });
|
|
|
|
await pagefind.mergeIndex("/website_b/pagefind/");
|
|
|
|
|
|
let search = await pagefind.search("web");
|
|
|
|
|
|
let pages = await Promise.all(search.results.map(r => r.data()));
|
|
|
|
document.querySelector('[data-result]').innerText = pages.map(p =>
|
|
p.url).join(", ");
|
|
- step: In my browser, I evaluate {js}
|
|
js: >-
|
|
let val = await toolproof.querySelector("[data-result]");
|
|
|
|
toolproof.assert_eq(val.innerHTML, `/website_a/hello/,
|
|
/website_b/lorem/`);
|