Skip to the content.

ReflexGrid’s tests run on GitHub Actions for every change, on a clean Linux machine. Many of them compare ReflexGrid with answers recorded from Microsoft Excel and kept in the repository (tests/*_expected.json), so anyone can check them. Excel can’t run on that machine, so the checks in Excel itself run on a Mac with Excel, and their latest results are published with this page. The page is written by the test run (scripts/compat_report.py) each time main changes.

Unit tests

Area What is checked Passed Known differences Failed
VBA language and library Expressions, conversions, strings, dates, Format, arrays, On Error, classes… against 457 answers: 444 recorded from Microsoft Excel for Mac, 13 that follow Excel for Windows where Excel for Mac lacks the feature 458 0 0
Excel object model from VBA Range, Worksheet, Application, tables, filters, names, formats… against 158 answers recorded from Microsoft Excel 151 8 0
UserForms Form designs in .xlsm and .frm/.frx files, the Forms object model, events and their order, against 68 answers recorded from Microsoft Excel 35 0 0
Macros and event macros The macro.* commands, VBA functions in formulas, Worksheet_Change and other events, MsgBox/InputBox, undo, the sandbox 47 0 0
.xlsm files and VBA projects Compound files, MS-OVBA compression, vbaProject.bin and .xlsm packages, read back with openpyxl 17 0 0
Formulas, functions and number formats Values and coercion, dates, the formula language, every worksheet function with hostile arguments, number formats as Excel shows them 50 0 0
Engine and .xlsx files Commands end to end: editing, recalculation, undo, clipboard, structure, formatting, sort and filter, tables, names, .xlsx round trips 57 0 0
Editing together Several people on one workbook, undo that takes back only your own changes, the shared workbook store 28 0 0
Third-party VBA: VBA-JSON’s own specs The spec workbook of VBA-JSON (MIT), written for Excel by its authors: ReflexGrid opens the published .xlsm and runs its own suite, one test per spec 23 1 0
All unit tests   866 9 0

Known differences from Excel

These cases give a different answer from Excel’s, on purpose or for now; the tests expect it (KNOWN in tests/test_vba_object_cases.py and tests/test_third_party_vba.py).

In the browser

End-to-end suites drive the real app with Playwright (headless Chromium), one job per suite (testcases/).

Suite What it checks Result
smoke_home A workbook loads: ribbon, formula bar, grid headers, sheet tabs, status bar, title bar (title, save status, who is here); no console errors Passed
editing_formulas Typing values and formulas, recalculation, formula bar, autocomplete, AutoSum, fill handle, undo/redo, copy/paste Passed
formatting_ribbon Bold, fill colour, number formats, merge, borders, Format Cells dialog, column resize Passed
sheets_data Sheet tabs (add/rename/switch), sort, filter dialog, tables, conditional formatting, charts from samples, dragging a chart and a picture (they move without resizing; one undo per drag) Passed
insert_tab The Insert tab button by button: every chart kind of the chart menus and All Charts, sparklines of each type, links (ScreenTip on hover, Ctrl/Cmd+click), comment threads (post, reply, resolve) and notes shown on hover, a cell holding a note or a comment but not both, Insert Function, a table and a picture Passed
xlsx_roundtrip Upload an .xlsx built with openpyxl, check what renders, download it again and re-read it with openpyxl Passed
collab_live Three people on one workbook: presence, each other’s selections and typing, edits and formulas reaching everyone, change highlights, per-person sheets, per-person undo, the shared title, jumping to someone, leaving and closing a tab Passed
workbook_manager The workbook list: who is editing, a new workbook and its title, search and filters, uploading, downloading, deleting a workbook someone has open Passed
vba_macros Excel macros: the Developer tab and VBA editor, F5 with MsgBox/InputBox answers, a VBA function in a formula, one undo for a run, the Macros dialog, event macros behind the security bar, stopping a long macro, downloading .xlsm and opening it again Passed
vba_userforms UserForms: an .xlsm with forms (built by the suite) opened in the browser; a modal form filled in (typing, a drop-down list, a check box, a KeyPress handler, a MsgBox over the form, OK writing the cells, Esc as Cancel), a modeless form beside the grid, the VBA editor’s form view (double-click for an event procedure, Run Form), designing a new form (Toolbox, Properties window, moving a control, its code, running it), the forms kept in the downloaded .xlsm, and the editor staying light in a dark-mode browser Passed

Checked in Microsoft Excel

These checks run ReflexGrid’s output in Microsoft Excel itself: Excel opens the macro-enabled workbooks and the files ReflexGrid writes, runs the same VBA, describes the same UserForms, and its answers are compared with ReflexGrid’s (scripts/excel_vba_oracle_mac.py --all --record, scripts/excel_check_mac.py --record). They need Excel, so they run on a Mac rather than in CI, and each row says when and on which commit it last ran.

The checks ran on commit 3758c56, in Microsoft Excel for Mac 16.114 (build 26101123) on macOS 15.3.1, 2026-10-15. This report is for commit 80af29f, 1 commit later (changes). Nothing the checks depend on (the engine, the test cases, the check scripts) changed since, so their results hold for this commit too.

Check Same answer as Excel Differences Not compared Last run
VBA language and library: each expression and function evaluated by Excel’s VBA and by ReflexGrid’s 442 of 442 0 2 2026-10-15, 3758c56
Excel object model: each scenario run as a macro by Excel and by ReflexGrid, comparing what it answers and the cells it leaves 150 of 158 8   2026-10-15, 3758c56
UserForms ReflexGrid wrote, loaded by Excel, which describes each form and control (type, position, size, caption, value, lists, fonts…) as ReflexGrid does 30 of 30 0   2026-10-15, 3758c56
The events a form’s code fires, and their order, in Excel and in ReflexGrid 20 of 20 0   2026-10-15, 3758c56
Forms made and changed with ReflexGrid’s form designer, loaded and described by Excel 18 of 18 0   2026-10-15, 3758c56
Workbooks ReflexGrid wrote: opened by Excel, their values, formulas and displayed text read there, saved by Excel, and Excel’s files recalculated by ReflexGrid to Excel’s results 89 of 89 0 15 2026-10-15, 3758c56

Every difference, with Excel’s answer and ReflexGrid’s, is in excel-oracle.json.

Download

Limits

What ReflexGrid doesn’t do yet (pivot tables, Power Query, controls placed on sheets, macro recording, a VBA debugger, anything outside the workbook from a macro) is listed in Excel macros (VBA) and the README’s FAQ.

Cite this report

Milo Chen and contributors (2026). ReflexGrid Excel compatibility report, commit 80af29f, 2026-10-15. https://milochen0418.github.io/reflex_grid/compatibility.html

To quote the result: ReflexGrid matched Microsoft Excel for Mac 16.114 (build 26101123) in 749 of 757 published comparison cases (98.9%). These cases cover what the checks exercise, not every Excel feature or workload.

For the software itself, see CITATION.cff (GitHub’s Cite this repository).