Repository navigation
Testing Instructions for Release Flows
Run these flows for minor and major releases, after the Critical Flows.
Before you start: set up the test site using the Test Setup page (both the Every run and Also for Release Flows sections).
Steps:
- On a site without the plugin, go to Plugins → Add New and install WP Search with Algolia.
- Activate it.
Expected Result: No errors, and the Algolia Search menu appears in wp-admin.
Steps:
- On a site running PHP below 8.1, install the plugin.
- Activate it.
Expected Result: The plugin doesn't load, and an admin notice names the PHP minimum. No fatal error.
Steps:
- On a site running WordPress below 6.2.9, install the plugin.
- Activate it.
Expected Result: An admin notice names the WordPress minimum.
Steps:
- With search set to a Use Algolia option, deactivate the plugin.
- Search on the front end.
Expected Result: Search falls back to normal WordPress search, with no errors.
Steps:
- Deactivate and delete the plugin.
- Check the
wp_optionstable foralgolia_*options.
Expected Result: No errors. The algolia_* options, including the API keys, are still in the database. That's known behaviour, not a bug.
Regression check: this bug shipped in 3.0.0. It must pass.
Steps:
- Install the latest 2.x release, save credentials, index content, and set up autocomplete.
- Update to the new release.
- Reload the Settings page, search on the front end, and type in the site search box.
Expected Result: Settings are kept, and search and autocomplete work without re-entering the keys.
Steps:
- Go to Algolia Search → Settings.
- Clear the Application ID, Search key, and Admin key, and click Save Changes.
Expected Result: A "should not be empty" error for each field.
Steps:
- Go to Algolia Search → Settings.
- Enter a wrong Admin key and click Save Changes.
Expected Result: An "unable to authenticate" error.
Steps:
- Go to Algolia Search → Settings.
- Paste the Admin key into the Search key field and click Save Changes.
Expected Result: A "your search API key is wrong" error.
Steps:
- Go to Algolia Search → Settings.
- Set the prefix to
staging_and save. - Set the prefix to
my-prefix!and save.
Expected Result: staging_ is accepted. my-prefix! shows "only alphanumeric characters and underscores", and staging_ is kept.
Steps:
- Define
ALGOLIA_APPLICATION_ID,ALGOLIA_SEARCH_API_KEY,ALGOLIA_API_KEY, andALGOLIA_INDEX_NAME_PREFIXinwp-config.php. - Go to Algolia Search → Settings, try to change those fields, and save.
Expected Result: The fields show the constants' values, and saving can't change them.
Steps:
- Go to Algolia Search → Settings, turn on Hide the Algolia logo, and save.
- Check the autocomplete dropdown and the InstantSearch page.
- Turn the setting off, save, and check again.
Expected Result: "Powered by Algolia" disappears while the setting is on, and comes back when it's off.
Steps:
- Go to Algolia Search → Settings, turn on Insights, and save.
- Search on the front end and click a result.
- In the Algolia dashboard, open Data Sources → Events.
Expected Result: The click event appears within a few minutes.
Steps:
- Go to Algolia Search → Autocomplete and click Re-index on the All posts card.
- Once it finishes, wait about a minute.
- In the Algolia dashboard, count the distinct posts in
searchable_posts(search withdistincton), not the records.
Expected Result: Every published, non-password-protected post and page is there. (The record count can be higher, because long posts are split.)
Steps:
- On the Autocomplete page, click Re-index on the Posts, Pages, and Media cards.
- Once they finish, wait about a minute.
- Compare
posts_post,posts_page, andposts_attachmentwith WordPress.
Expected Result: Each index matches WordPress.
Steps:
- Make sure one category has no posts.
- On the Autocomplete page, re-index the Categories and Tags cards.
- Once they finish, wait about a minute, then check
terms_categoryandterms_post_tag.
Expected Result: Only categories and tags used by at least one post are indexed. The empty category isn't.
Steps:
- On the Autocomplete page, re-index the Users card.
- Once it finishes, wait about a minute, then check
users.
Expected Result: Only users with at least one post are indexed. The user with no posts and the Editor aren't.
Steps:
- Start a re-index on the Autocomplete page.
- Before it finishes, try to leave the page.
Expected Result: The browser warns that re-indexing will be aborted.
Steps:
- Publish a post with more than 2,000 characters of content.
- Re-index All posts.
- Once it finishes, wait about a minute.
- In
searchable_posts, find the post withdistinctoff and count its records. - Search for the post on the front end.
Expected Result:
- Step 4: the post has several records, and there were no errors.
- Step 5: the post shows once in the results.
Steps:
- Define
ALGOLIA_SPLIT_POSTSasfalseinwp-config.php. - Re-index All posts, then wait about a minute.
- In
searchable_posts, find the long post from the previous flow withdistinctoff.
Expected Result: The post has a single record.
Steps:
- On the Autocomplete page, click Push settings on a card.
- Confirm the prompt.
Expected Result: The prompt warns it overwrites settings in the Algolia dashboard. After confirming, a success message names the index.
Regression check: this bug shipped in 3.0.0. It must pass.
Steps:
- Log in as an Editor.
- Send the
algolia_re_indexandalgolia_push_settingsadmin-ajax requests with a valid nonce.
Expected Result: Both return 403 "You are not allowed to do this."
Regression check: this bug shipped in 3.0.0. It must pass.
Steps:
- Log in as an admin.
- Send the
algolia_re_indexandalgolia_push_settingsadmin-ajax requests with no nonce, then with an invalid one.
Expected Result: All four return 403 "You are not allowed to do this."
Before these flows: go to Algolia Search → Autocomplete, turn on the cards for All posts, Posts, Pages, Media, Categories, Tags, and Users, and save. Only indexes with a card turned on stay in sync (plus
searchable_postswhen the Search Page uses Algolia).
After each step, wait about 10 seconds, then check searchable_posts and posts_post.
Steps:
- Publish a new post.
- Edit its title and content.
- Trash it.
- Restore and publish it.
- Permanently delete it.
Expected Result:
- Step 1: the post is added to both indexes.
- Step 2: the post is updated in both, with no duplicates.
- Step 3: the post is removed from both.
- Step 4: the post is back in both.
- Step 5: the post is removed from both.
Steps:
- Switch a published post to Draft, wait about 10 seconds, and check
searchable_postsandposts_post. - Republish it, wait about 10 seconds, and check again.
- Repeat steps 1 and 2 with Private, then Pending.
Expected Result: The post is removed from both indexes each time it's unpublished, and is back in both each time it's republished.
Steps:
- Add a password to a published post, wait about 10 seconds, and check
searchable_postsandposts_post. - Remove the password, wait about 10 seconds, and check again.
Expected Result: The post is removed from both indexes while it has a password, and is back in both once the password is removed.
Steps:
- Schedule a post a few minutes in the future, then check
searchable_postsandposts_post. - After it publishes, wait about 10 seconds and check again.
Expected Result: The post is in neither index while scheduled, and in both once it publishes.
Known issue: WDSP-2593. Expected to fail until that ticket is fixed. If it passes, note it on the ticket.
Steps:
- Take a published parent page with at least 2 published child pages.
- Change the parent page's slug and update it.
- Wait about 10 seconds, then check the parent and each child in
searchable_postsandposts_page.
Expected Result: The parent's URL and both child pages' URLs update in both indexes.
Steps:
- Set, change, or remove a published post's featured image.
- Wait about 10 seconds, then check the post in
searchable_postsandposts_post.
Expected Result: The post's images update in both indexes.
Steps:
- Change a custom field on a published post.
- Wait about 10 seconds, then check the post in
searchable_postsandposts_post.
Expected Result: The post does not change in either index, unless the field is added with the algolia_watch_post_meta_keys filter.
After each step, wait about 10 seconds, then check posts_attachment.
Steps:
- Upload an image to the Media Library.
- Edit its title or alt text.
- Delete it permanently.
Expected Result:
- Step 1: the image is indexed.
- Step 2: the record updates.
- Step 3: the record is removed.
Steps:
- Open a draft post and upload an image from inside the editor.
- Wait about 10 seconds, then check
posts_attachment.
Expected Result: The image isn't indexed, because its post is a draft.
Steps:
- In the block editor, add a brand-new tag to a published post and update it.
- Wait about 10 seconds, then check
terms_post_tag.
Expected Result: The tag is indexed.
Known issue: WDSP-2594. Expected to fail until that ticket is fixed. If it passes, note it on the ticket.
Steps:
- Add a brand-new tag to a published post by typing its name in the classic editor or Quick Edit (or with
wp post term add). - Wait about 10 seconds, then check
terms_post_tag.
Expected Result: The tag is indexed.
Steps:
- Rename a tag that a published post uses.
- Wait about 10 seconds, then check the tag in
terms_post_tagand the post insearchable_postsandposts_post.
Expected Result: The tag's record updates, and the post shows the new tag name in both indexes.
Steps:
- Rename a tag used by more than 50 posts.
Expected Result: A notice says only the first 50 posts were synced and asks for a bulk re-index.
Regression check: this bug shipped in 3.0.1. It must pass.
Steps:
- Take a tag used by both a post and a page.
- Rename it.
- Wait about 10 seconds, then check
debug.log. - Check the post in
searchable_postsandposts_post, and the page insearchable_postsandposts_page.
Expected Result: No fatal error, and the post and the page show the new tag name in every index.
Steps:
- Delete a tag.
- Wait about 10 seconds, then check
terms_post_tag.
Expected Result: The tag's record is removed.
Steps:
- Change an author's display name.
- Wait about 10 seconds, then check
users.
Expected Result: The user's record shows the new name.
Steps:
- As an author with no posts, publish a post.
- Wait about 10 seconds, then check
users.
Expected Result: The author is indexed.
Steps:
- Permanently delete an author's only post.
- Wait about 10 seconds, then check
users.
Expected Result: The author's record is removed.
Steps:
- Delete a user who has posts, and reassign their posts to someone else.
- Wait about 10 seconds, then check
users.
Expected Result: The deleted user's record is removed.
Steps:
- Go to Algolia Search → Autocomplete.
- Turn on Enable Autocomplete, turn off every card, and save.
Expected Result: A warning says you "did not choose any index". Afterwards, turn the cards back on (see the note at the start of Sync).
Steps:
- On the Autocomplete page, turn on some cards and save.
Expected Result: "Autocomplete settings saved".
Steps:
- On the Autocomplete page, drag the cards into a new order and save.
- Type in the site search box.
Expected Result: The dropdown sections follow the new order.
Steps:
- On the Autocomplete page, change a card's section label and max suggestions, and save.
- Type in the site search box.
Expected Result: The dropdown shows the new label and number of suggestions.
Steps:
- On the Autocomplete page, turn off one card and save.
- Type in the site search box.
- Edit a post of that card's type, wait about 10 seconds, and check that card's index.
Expected Result: That section disappears from the dropdown, and that index stops syncing. The card's settings are kept. Turn the card back on afterwards.
Steps:
- On the Autocomplete page, set debounce to
200and save. - Type in the site search box with the browser's Network tab open.
- Set debounce to
0, save, and type again.
Expected Result: At 200, requests wait until you pause typing. At 0, one fires per keystroke.
Steps:
- Set Autocomplete Version to Legacy and save.
- Type in the theme's search box.
- Use the arrow keys and Enter, then click a different result.
Expected Result: A dropdown appears, the keyboard moves through it, and clicking a result opens it.
Steps:
- Type a typo, such as "algloia", in the site search box.
Expected Result: Relevant results still appear.
Steps:
- Type in the admin bar's search box.
- Type in an input with the class
no-autocomplete.
Expected Result: Neither box gets the dropdown.
Steps:
- Set Autocomplete Version to Modern and save, without adding the custom container element.
- Load the front end with the Console open.
Expected Result: No dropdown attaches (expected), and no JS errors.
Steps:
- Add the required container element to the theme.
- Type in it.
Expected Result: The Modern dropdown appears and works.
Steps:
- Go to Algolia Search → Search Page, choose Do not use Algolia for search, and save.
- Visit
/?s=algloia.
Expected Result: A notice confirms you're keeping WordPress search, and the typo finds nothing.
Steps:
- On the Search Page screen, choose Use Algolia, keep your theme's search template, and save.
- Visit
/?s=algloia.
Expected Result: The theme's normal search page shows Algolia results, including matches for the typo.
Steps:
- On the Search Page screen, choose Use Algolia with InstantSearch.js and save.
- Visit
/?s=with a term that has several pages of results. - Change the query in the search box.
- In a window at least 1000px wide, click a facet such as a category.
- Clear the facet and go to page 2.
Expected Result:
- Step 2: the InstantSearch page loads with results.
- Step 3: results update as you type, and the address bar updates with the query.
- Step 4: results narrow to that facet without reloading. (The Legacy template hides facets below 1000px wide.)
- Step 5: page 2 loads.
Steps:
- On the Search Page screen, set the InstantSearch template to Legacy and search.
- Switch to Modern and search again.
Expected Result: Both templates render and search correctly.
Steps:
- Copy
templates/instantsearch.phpintoyour-theme/algolia/and add a visible marker. - Load the search page.
- Switch the template version and back.
Expected Result: Your copy is used, and switching versions doesn't overwrite it.
Regression check: this bug shipped in 2.10.4. It must pass.
Steps:
- On a block theme, with InstantSearch selected, load
/?s=term. - Filter
algolia_is_block_themetofalseand reload.
Expected Result:
- Step 1: the scripts load, but the block theme's own search page shows (expected).
- Step 2: the classic InstantSearch page shows.
Steps:
- Search with an empty query.
Expected Result: A sensible empty state, and no JS errors.
Steps:
- Search for something that matches nothing.
Expected Result: A sensible "no results" state, and no JS errors.
Steps:
- Run
wp algolia reindex.
Expected Result: An error asks for an index name or --all.
Steps:
- Run
wp algolia reindex searchable_posts.
Expected Result: Success, with a batch count.
Steps:
- Run
wp algolia reindexwith your prefix included, e.g.wp algolia reindex wp_searchable_posts.
Expected Result: An error says the index doesn't exist and not to include the prefix.
Steps:
- Run
wp algolia reindex searchable_posts --all.
Expected Result: An error says you can't give both.
Steps:
- Run
wp algolia reindex searchable_posts --from_batch=999.
Expected Result: An "out of bounds" error.
Regression check: this bug shipped in 3.0.0. It must pass.
Steps:
- In the Algolia dashboard, add a stray record to an enabled index.
- Run
wp algolia reindex --all. - Look for the stray record.
Expected Result: Everything is re-indexed, and the stray record is still there.
Steps:
- Make sure the stray record from the previous flow is still there.
- Run
wp algolia reindex --all --clear. - Look for the stray record.
Expected Result: The stray record is gone.
Steps:
- On a site with no autocomplete cards turned on and native search selected, run
wp algolia reindex --all.
Expected Result: A message says nothing was re-indexed. (Today it prints nothing at all.)
Steps:
- With no API keys saved, run
wp algolia reindex --all.
Expected Result: An error says it can't contact the Algolia API.
Regression check: this bug shipped in 2.14.1. It must pass.
Steps:
- Trigger a plugin warning, for example by turning on Enable Autocomplete with every card off.
- Open the Posts list, the Dashboard, and a WooCommerce order.
Expected Result: The warning shows only on Algolia screens, not on any of those three. Turn the cards back on afterwards.
Steps:
- Go to Tools → Site Health → Info and open WP Search with Algolia.
Expected Result: It lists the constants, Reachable API, Searchable Posts Index Enabled, and Autocomplete Enabled.
Regression check: this bug shipped in 2.12.0. It must pass.
Steps:
- With no API keys saved, go to Tools → Site Health → Info.
Expected Result: The page loads without errors.
Steps:
- If you can, turn off the
mbstringorcurlPHP extension. - Load wp-admin.
Expected Result: A notice names the missing extension.
Steps:
- Open any Algolia admin screen and scroll to the footer.
Expected Result: It shows the version, Support and Review links, and "Go Pro".
Steps:
- Open each of the three screens under Algolia Search.
- Click their links.
Expected Result: Each screen loads and its links work.
Regression check: this bug shipped in 2.14.0. It must pass.
Steps:
- Go to Algolia Search → Premium Support and find the requirements check.
Expected Result: It shows the site's WordPress, PHP, and plugin versions correctly.
Steps:
- With WooCommerce active, go to Algolia Search → Autocomplete.
- Read the list of cards.
Expected Result: No cards for orders, refunds, coupons, scheduled actions, shipping classes, or product visibility. Coupons matter most: if indexed, coupon codes become readable with the public Search key.
Steps:
- Turn on the Products card and re-index it.
- Once it finishes, wait about a minute, then check
posts_product.
Expected Result: The simple and variable products are indexed correctly.
Regression check: this bug shipped in 3.0.1. It must pass.
Steps:
- With the Products card on, edit a variable product's title and slug.
- Edit one of its variations' prices.
- Check
debug.log.
Expected Result: No fatal error.
Steps:
- With Yoast SEO active, run a full re-index.
Expected Result: No errors.
Steps:
- With WPML active and content in more than one language, re-index All posts.
- Check each language's records.
Expected Result: Each language's posts are indexed in the right language.
Steps:
- Import posts with WP All Import in fast mode.
- Check the index during and after the import.
Expected Result: Posts are added in batches, and the existing index isn't cleared.
Steps:
- Re-index a post built with WPBakery (Visual Composer).
- Check the record's content.
Expected Result: The content is plain text, not raw [vc_…] shortcodes.
Steps:
- Activate W3 Total Cache and turn on database caching.
- Load wp-admin and click the notice's link.
Expected Result: A notice says to add algolia_ to Ignored Query Stems, and its link works.
Regression check: this bug shipped in 2.13.1. It must pass.
Steps:
- On a ClassicPress site (if it's still supported), install, activate, and re-index.
Expected Result: It activates and indexes.
Schemas
Settings
Automated Sync
Synonyms
Custom Attributes
Index Replicas
Migration Guide
Customize Templates
Customize Search
Customize Autocomplete
Customize Autocomplete (Modern Template) debounce
Migrating InstantSearch Templates to Block Themes (FSE)
Which Flows to Run
Test Setup
Critical Flows
Testing Instructions for Critical Flows
Regression Checks
Release Flows
Testing Instructions for Release Flows