Testing Instructions for Release Flows · WebDevStudios/wp-search-with-algolia Wiki · GitHub
Skip to content

Testing Instructions for Release Flows

Lauren Pittenger edited this page Oct 30, 2026 · 2 revisions

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).

Flow Areas

Installation

Fresh install and activation

Steps:

  1. On a site without the plugin, go to Plugins → Add New and install WP Search with Algolia.
  2. Activate it.

Expected Result: No errors, and the Algolia Search menu appears in wp-admin.

Activation is blocked on PHP below 8.1

Steps:

  1. On a site running PHP below 8.1, install the plugin.
  2. Activate it.

Expected Result: The plugin doesn't load, and an admin notice names the PHP minimum. No fatal error.

Activation is blocked on WordPress below 6.2.9

Steps:

  1. On a site running WordPress below 6.2.9, install the plugin.
  2. Activate it.

Expected Result: An admin notice names the WordPress minimum.

Deactivation falls back to WordPress search

Steps:

  1. With search set to a Use Algolia option, deactivate the plugin.
  2. Search on the front end.

Expected Result: Search falls back to normal WordPress search, with no errors.

Deleting the plugin

Steps:

  1. Deactivate and delete the plugin.
  2. Check the wp_options table for algolia_* options.

Expected Result: No errors. The algolia_* options, including the API keys, are still in the database. That's known behaviour, not a bug.

Back to top


Upgrade

Upgrading from 2.x keeps settings and search working

Regression check: this bug shipped in 3.0.0. It must pass.

Steps:

  1. Install the latest 2.x release, save credentials, index content, and set up autocomplete.
  2. Update to the new release.
  3. 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.

Back to top


Settings

Empty credentials are rejected

Steps:

  1. Go to Algolia Search → Settings.
  2. Clear the Application ID, Search key, and Admin key, and click Save Changes.

Expected Result: A "should not be empty" error for each field.

A wrong Admin key is rejected

Steps:

  1. Go to Algolia Search → Settings.
  2. Enter a wrong Admin key and click Save Changes.

Expected Result: An "unable to authenticate" error.

The Admin key is rejected as the Search key

Steps:

  1. Go to Algolia Search → Settings.
  2. Paste the Admin key into the Search key field and click Save Changes.

Expected Result: A "your search API key is wrong" error.

The index prefix only allows letters, numbers and underscores

Steps:

  1. Go to Algolia Search → Settings.
  2. Set the prefix to staging_ and save.
  3. 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.

wp-config.php constants lock their fields

Steps:

  1. Define ALGOLIA_APPLICATION_ID, ALGOLIA_SEARCH_API_KEY, ALGOLIA_API_KEY, and ALGOLIA_INDEX_NAME_PREFIX in wp-config.php.
  2. 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.

Hiding the Algolia logo

Steps:

  1. Go to Algolia Search → Settings, turn on Hide the Algolia logo, and save.
  2. Check the autocomplete dropdown and the InstantSearch page.
  3. 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.

Insights records click events

Steps:

  1. Go to Algolia Search → Settings, turn on Insights, and save.
  2. Search on the front end and click a result.
  3. In the Algolia dashboard, open Data Sources → Events.

Expected Result: The click event appears within a few minutes.

Back to top


Indexing

Re-indexing All posts gives the right count

Steps:

  1. Go to Algolia Search → Autocomplete and click Re-index on the All posts card.
  2. Once it finishes, wait about a minute.
  3. In the Algolia dashboard, count the distinct posts in searchable_posts (search with distinct on), 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.)

Re-indexing post type indexes gives the right counts

Steps:

  1. On the Autocomplete page, click Re-index on the Posts, Pages, and Media cards.
  2. Once they finish, wait about a minute.
  3. Compare posts_post, posts_page, and posts_attachment with WordPress.

Expected Result: Each index matches WordPress.

Only terms in use are indexed

Steps:

  1. Make sure one category has no posts.
  2. On the Autocomplete page, re-index the Categories and Tags cards.
  3. Once they finish, wait about a minute, then check terms_category and terms_post_tag.

Expected Result: Only categories and tags used by at least one post are indexed. The empty category isn't.

Only authors with posts are indexed

Steps:

  1. On the Autocomplete page, re-index the Users card.
  2. 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.

Leaving the page during a re-index warns you

Steps:

  1. Start a re-index on the Autocomplete page.
  2. Before it finishes, try to leave the page.

Expected Result: The browser warns that re-indexing will be aborted.

Long posts are split into records

Steps:

  1. Publish a post with more than 2,000 characters of content.
  2. Re-index All posts.
  3. Once it finishes, wait about a minute.
  4. In searchable_posts, find the post with distinct off and count its records.
  5. 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.

ALGOLIA_SPLIT_POSTS keeps long posts as one record

Steps:

  1. Define ALGOLIA_SPLIT_POSTS as false in wp-config.php.
  2. Re-index All posts, then wait about a minute.
  3. In searchable_posts, find the long post from the previous flow with distinct off.

Expected Result: The post has a single record.

Push settings

Steps:

  1. On the Autocomplete page, click Push settings on a card.
  2. Confirm the prompt.

Expected Result: The prompt warns it overwrites settings in the Algolia dashboard. After confirming, a success message names the index.

Back to top


Security

Editors can't re-index or push settings

Regression check: this bug shipped in 3.0.0. It must pass.

Steps:

  1. Log in as an Editor.
  2. Send the algolia_re_index and algolia_push_settings admin-ajax requests with a valid nonce.

Expected Result: Both return 403 "You are not allowed to do this."

Requests without a valid nonce are refused

Regression check: this bug shipped in 3.0.0. It must pass.

Steps:

  1. Log in as an admin.
  2. Send the algolia_re_index and algolia_push_settings admin-ajax requests with no nonce, then with an invalid one.

Expected Result: All four return 403 "You are not allowed to do this."

Back to top


Sync

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_posts when the Search Page uses Algolia).

Editing, trashing and deleting a post stay in sync

After each step, wait about 10 seconds, then check searchable_posts and posts_post.

Steps:

  1. Publish a new post.
  2. Edit its title and content.
  3. Trash it.
  4. Restore and publish it.
  5. 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.

Unpublished posts are removed

Steps:

  1. Switch a published post to Draft, wait about 10 seconds, and check searchable_posts and posts_post.
  2. Republish it, wait about 10 seconds, and check again.
  3. 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.

Password-protected posts are removed

Steps:

  1. Add a password to a published post, wait about 10 seconds, and check searchable_posts and posts_post.
  2. 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.

Scheduled posts aren't indexed until they publish

Steps:

  1. Schedule a post a few minutes in the future, then check searchable_posts and posts_post.
  2. 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.

Child page URLs update after a parent slug change

Known issue: WDSP-2593. Expected to fail until that ticket is fixed. If it passes, note it on the ticket.

Steps:

  1. Take a published parent page with at least 2 published child pages.
  2. Change the parent page's slug and update it.
  3. Wait about 10 seconds, then check the parent and each child in searchable_posts and posts_page.

Expected Result: The parent's URL and both child pages' URLs update in both indexes.

Featured image changes sync

Steps:

  1. Set, change, or remove a published post's featured image.
  2. Wait about 10 seconds, then check the post in searchable_posts and posts_post.

Expected Result: The post's images update in both indexes.

Custom field changes don't sync

Steps:

  1. Change a custom field on a published post.
  2. Wait about 10 seconds, then check the post in searchable_posts and posts_post.

Expected Result: The post does not change in either index, unless the field is added with the algolia_watch_post_meta_keys filter.

Uploading, editing and deleting an image stay in sync

After each step, wait about 10 seconds, then check posts_attachment.

Steps:

  1. Upload an image to the Media Library.
  2. Edit its title or alt text.
  3. Delete it permanently.

Expected Result:

  • Step 1: the image is indexed.
  • Step 2: the record updates.
  • Step 3: the record is removed.

Images attached to a draft aren't indexed

Steps:

  1. Open a draft post and upload an image from inside the editor.
  2. Wait about 10 seconds, then check posts_attachment.

Expected Result: The image isn't indexed, because its post is a draft.

A new tag added in the block editor is indexed

Steps:

  1. In the block editor, add a brand-new tag to a published post and update it.
  2. Wait about 10 seconds, then check terms_post_tag.

Expected Result: The tag is indexed.

A new tag typed by name is indexed

Known issue: WDSP-2594. Expected to fail until that ticket is fixed. If it passes, note it on the ticket.

Steps:

  1. 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).
  2. Wait about 10 seconds, then check terms_post_tag.

Expected Result: The tag is indexed.

Renaming a tag updates the posts that use it

Steps:

  1. Rename a tag that a published post uses.
  2. Wait about 10 seconds, then check the tag in terms_post_tag and the post in searchable_posts and posts_post.

Expected Result: The tag's record updates, and the post shows the new tag name in both indexes.

Renaming a tag used by more than 50 posts shows a notice

Steps:

  1. 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.

Editing a tag shared by a post and a page

Regression check: this bug shipped in 3.0.1. It must pass.

Steps:

  1. Take a tag used by both a post and a page.
  2. Rename it.
  3. Wait about 10 seconds, then check debug.log.
  4. Check the post in searchable_posts and posts_post, and the page in searchable_posts and posts_page.

Expected Result: No fatal error, and the post and the page show the new tag name in every index.

Deleting a tag removes it

Steps:

  1. Delete a tag.
  2. Wait about 10 seconds, then check terms_post_tag.

Expected Result: The tag's record is removed.

Changing an author's display name syncs

Steps:

  1. Change an author's display name.
  2. Wait about 10 seconds, then check users.

Expected Result: The user's record shows the new name.

An author's first post indexes them

Steps:

  1. As an author with no posts, publish a post.
  2. Wait about 10 seconds, then check users.

Expected Result: The author is indexed.

Deleting an author's only post removes them

Steps:

  1. Permanently delete an author's only post.
  2. Wait about 10 seconds, then check users.

Expected Result: The author's record is removed.

Deleting a user removes them

Steps:

  1. Delete a user who has posts, and reassign their posts to someone else.
  2. Wait about 10 seconds, then check users.

Expected Result: The deleted user's record is removed.

Back to top


Autocomplete

Autocomplete with no indexes shows a warning

Steps:

  1. Go to Algolia Search → Autocomplete.
  2. 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).

Saving autocomplete settings

Steps:

  1. On the Autocomplete page, turn on some cards and save.

Expected Result: "Autocomplete settings saved".

Reordering autocomplete sections

Steps:

  1. On the Autocomplete page, drag the cards into a new order and save.
  2. Type in the site search box.

Expected Result: The dropdown sections follow the new order.

Changing a section's label and number of suggestions

Steps:

  1. On the Autocomplete page, change a card's section label and max suggestions, and save.
  2. Type in the site search box.

Expected Result: The dropdown shows the new label and number of suggestions.

Turning off an autocomplete card

Steps:

  1. On the Autocomplete page, turn off one card and save.
  2. Type in the site search box.
  3. 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.

Autocomplete debounce

Steps:

  1. On the Autocomplete page, set debounce to 200 and save.
  2. Type in the site search box with the browser's Network tab open.
  3. Set debounce to 0, save, and type again.

Expected Result: At 200, requests wait until you pause typing. At 0, one fires per keystroke.

The Legacy dropdown works with mouse and keyboard

Steps:

  1. Set Autocomplete Version to Legacy and save.
  2. Type in the theme's search box.
  3. 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.

Autocomplete handles typos

Steps:

  1. Type a typo, such as "algloia", in the site search box.

Expected Result: Relevant results still appear.

Some search boxes don't get autocomplete

Steps:

  1. Type in the admin bar's search box.
  2. Type in an input with the class no-autocomplete.

Expected Result: Neither box gets the dropdown.

The Modern template doesn't attach without a container

Steps:

  1. Set Autocomplete Version to Modern and save, without adding the custom container element.
  2. Load the front end with the Console open.

Expected Result: No dropdown attaches (expected), and no JS errors.

The Modern template works with a container

Steps:

  1. Add the required container element to the theme.
  2. Type in it.

Expected Result: The Modern dropdown appears and works.

Back to top


Search

Native WordPress search mode

Steps:

  1. Go to Algolia Search → Search Page, choose Do not use Algolia for search, and save.
  2. Visit /?s=algloia.

Expected Result: A notice confirms you're keeping WordPress search, and the typo finds nothing.

Algolia with the theme's search template

Steps:

  1. On the Search Page screen, choose Use Algolia, keep your theme's search template, and save.
  2. Visit /?s=algloia.

Expected Result: The theme's normal search page shows Algolia results, including matches for the typo.

Searching, filtering and paging on the InstantSearch page

Steps:

  1. On the Search Page screen, choose Use Algolia with InstantSearch.js and save.
  2. Visit /?s= with a term that has several pages of results.
  3. Change the query in the search box.
  4. In a window at least 1000px wide, click a facet such as a category.
  5. 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.

Legacy and Modern InstantSearch templates

Steps:

  1. On the Search Page screen, set the InstantSearch template to Legacy and search.
  2. Switch to Modern and search again.

Expected Result: Both templates render and search correctly.

A theme can override the search template

Steps:

  1. Copy templates/instantsearch.php into your-theme/algolia/ and add a visible marker.
  2. Load the search page.
  3. Switch the template version and back.

Expected Result: Your copy is used, and switching versions doesn't overwrite it.

InstantSearch on a block theme

Regression check: this bug shipped in 2.10.4. It must pass.

Steps:

  1. On a block theme, with InstantSearch selected, load /?s=term.
  2. Filter algolia_is_block_theme to false and 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.

Empty searches

Steps:

  1. Search with an empty query.

Expected Result: A sensible empty state, and no JS errors.

Searches with no results

Steps:

  1. Search for something that matches nothing.

Expected Result: A sensible "no results" state, and no JS errors.

Back to top


WP-CLI

wp algolia reindex with no arguments

Steps:

  1. Run wp algolia reindex.

Expected Result: An error asks for an index name or --all.

wp algolia reindex for one index

Steps:

  1. Run wp algolia reindex searchable_posts.

Expected Result: Success, with a batch count.

wp algolia reindex with the prefix in the index name

Steps:

  1. Run wp algolia reindex with 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.

wp algolia reindex with an index name and --all

Steps:

  1. Run wp algolia reindex searchable_posts --all.

Expected Result: An error says you can't give both.

wp algolia reindex with an out-of-range batch

Steps:

  1. Run wp algolia reindex searchable_posts --from_batch=999.

Expected Result: An "out of bounds" error.

wp algolia reindex --all keeps existing records

Regression check: this bug shipped in 3.0.0. It must pass.

Steps:

  1. In the Algolia dashboard, add a stray record to an enabled index.
  2. Run wp algolia reindex --all.
  3. Look for the stray record.

Expected Result: Everything is re-indexed, and the stray record is still there.

wp algolia reindex --all --clear empties indexes first

Steps:

  1. Make sure the stray record from the previous flow is still there.
  2. Run wp algolia reindex --all --clear.
  3. Look for the stray record.

Expected Result: The stray record is gone.

wp algolia reindex --all with no enabled indexes

Steps:

  1. 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.)

wp algolia reindex with no API keys

Steps:

  1. With no API keys saved, run wp algolia reindex --all.

Expected Result: An error says it can't contact the Algolia API.

Back to top


Admin

Plugin notices only show on Algolia screens

Regression check: this bug shipped in 2.14.1. It must pass.

Steps:

  1. Trigger a plugin warning, for example by turning on Enable Autocomplete with every card off.
  2. 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.

Site Health shows the plugin's status

Steps:

  1. 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.

Site Health works with no keys

Regression check: this bug shipped in 2.12.0. It must pass.

Steps:

  1. With no API keys saved, go to Tools → Site Health → Info.

Expected Result: The page loads without errors.

Missing PHP extensions show a notice

Steps:

  1. If you can, turn off the mbstring or curl PHP extension.
  2. Load wp-admin.

Expected Result: A notice names the missing extension.

The admin footer

Steps:

  1. Open any Algolia admin screen and scroll to the footer.

Expected Result: It shows the version, Support and Review links, and "Go Pro".

The Premium Support, WooCommerce and SEO screens load

Steps:

  1. Open each of the three screens under Algolia Search.
  2. Click their links.

Expected Result: Each screen loads and its links work.

The Pro requirements check is accurate

Regression check: this bug shipped in 2.14.0. It must pass.

Steps:

  1. Go to Algolia Search → Premium Support and find the requirements check.

Expected Result: It shows the site's WordPress, PHP, and plugin versions correctly.

Back to top


Integrations

WooCommerce internals aren't offered as indexes

Steps:

  1. With WooCommerce active, go to Algolia Search → Autocomplete.
  2. 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.

WooCommerce products are indexed

Steps:

  1. Turn on the Products card and re-index it.
  2. Once it finishes, wait about a minute, then check posts_product.

Expected Result: The simple and variable products are indexed correctly.

Editing a variable product

Regression check: this bug shipped in 3.0.1. It must pass.

Steps:

  1. With the Products card on, edit a variable product's title and slug.
  2. Edit one of its variations' prices.
  3. Check debug.log.

Expected Result: No fatal error.

Yoast SEO

Steps:

  1. With Yoast SEO active, run a full re-index.

Expected Result: No errors.

WPML

Steps:

  1. With WPML active and content in more than one language, re-index All posts.
  2. Check each language's records.

Expected Result: Each language's posts are indexed in the right language.

WP All Import

Steps:

  1. Import posts with WP All Import in fast mode.
  2. Check the index during and after the import.

Expected Result: Posts are added in batches, and the existing index isn't cleared.

WPBakery

Steps:

  1. Re-index a post built with WPBakery (Visual Composer).
  2. Check the record's content.

Expected Result: The content is plain text, not raw [vc_…] shortcodes.

W3 Total Cache

Steps:

  1. Activate W3 Total Cache and turn on database caching.
  2. 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.

ClassicPress

Regression check: this bug shipped in 2.13.1. It must pass.

Steps:

  1. On a ClassicPress site (if it's still supported), install, activate, and re-index.

Expected Result: It activates and indexes.

Back to top

Clone this wiki locally