Code Monkey home page Code Monkey logo

quality's Introduction

Handsontable

Handsontable is a JavaScript component that combines data grid features with spreadsheet-like UX.
It provides data binding, data validation, filtering, sorting, and CRUD operations.

npm npm CI status FOSSA Status Quality Gate Status


Get started with Handsontable

React  Angular  Vue  Vue 3    JavaScript 

Handsontable data grid

Features

The most popular features of Handsontable:

  ✓  Multiple column sorting
  ✓  Non-contiguous selection
  ✓  Filtering data
  ✓  Export to file
  ✓  Validating data
  ✓  Conditional formatting
  ✓  Merging cells
  ✓  Freezing rows/columns
  ✓  Moving rows/columns
  ✓  Resizing rows/columns
  ✓  Hiding rows/columns
  ✓  Context menu
  ✓  Comments

Documentation

Get started

1. Install Handsontable

Using a package manager

Get Handsontable from npm, Yarn or NuGet.

npm install handsontable
import Handsontable from 'handsontable';

import 'handsontable/dist/handsontable.full.min.css';

Using a CDN

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.js"></script>

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.css" />

2. Create a container

<div id="example"></div>

3. Initialize your grid

const container = document.querySelector('#example');
const hot = new Handsontable(container, {
  data: [
    ['', 'Tesla', 'Volvo', 'Toyota', 'Ford'],
    ['2019', 10, 11, 12, 13],
    ['2020', 20, 11, 14, 13],
    ['2021', 30, 15, 12, 13]
  ],
  rowHeaders: true,
  colHeaders: true,
  licenseKey: 'non-commercial-and-evaluation' // for non-commercial use only
});

Support

We provide support for developers working with commercial version via contact form or at [email protected].

If you use a non-commercial version then please ask your tagged question on StackOverflow.

License

Handsontable is a commercial software with two licenses available:

  • Free for non-commercial purposes such as teaching, academic research, and evaluation. Read it here.
  • Commercial license with support and maintenance included. See pricing plans.

License key

If you use Handsontable in a project that supports your commercial activity, then you must purchase the license key at handsontable.com.

If you use the free for non-commercial license of Handsontable, then pass the phrase 'non-commercial-and-evaluation', as described in this documentation.



Proudly created and maintained by the Handsontable Team.

quality's People

Contributors

aninde avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

isabella232

quality's Issues

[HyperFormula] Acceptance of text operations

Description

We need to check text operations with operators like =, <, >, <>, +, -, *, ^, &, prefix +, prefix -.
Later also with

Test cases

Choose and test precisely with some of:

  • strings with Chinese characters

The rest will be tested later, on accessibility testing.

Requirements

Libra Office is case sensitive

Documentation

SVG Borders - Retesting issues

After merge with 8.0.0

Retests from stage 1 handsontable/handsontable#6467 (comment)

  • #4142 Custom border on fixed row
  • #4940 The selection doesn't work with merged cells with fixed overlays
  • #5298 Printing custom borders with bootstrap css
  • #5568 CustomBorders draws borders of width 2px+ incorrectly
  • #4993 The fragmentSelection doesn't draw all the borders in some cases

Test.mobile tests do not pass anywhere

Description

Test generates by test:mobile.dump do not pass on any device.

We should fixed that.

Tested on:

Browser - Firefox
Mobile Nokia Lumia via BrowserStack
Mobile Huawei Mate 20 with Android via GhostLab
Ipad via GhostLab
Mobile Iphone Pro 13 / Chrome via BrowserStack and GhostLab

I was able to determine that the customer's request was created and their support was not implemented.
Screenshot 2020-02-04 at 12 12 43
Generic_Smartphone__Chrome_Mobile_79_0_2020-02-04T12 17 28

[React-HOT] Version 3.1.3

Description

Testing release of React-Hansontable.
The naming of the version is inconsistent. Here I used the same as developers.

Release date: tomorrow, 15.04.20

Builds

https://github.com/handsontable/react-handsontable/tree/release/3.1.3

https://gist.githack.com/aninde/b14feb05f94b415168602b495577e3f2/raw/e52463bf9280f52edfc012ab0d43cd22a17731b5/react-handsontable.min.js

Testing checklist

  • build Handsontable-React
  • test with Redux
  • test with custom Editor https://jsfiddle.net/aninde/ghy56qxu/1/
  • Referencing the Handsontable instance
  • open and click through documentation demos in different browsers (Safari, Chrome, Firefox)
  • documentation: after release

Related issues for retest

Requirements

No regressive errors
New features work correctly
Correct operation in various environments which we currently support

[Handsontable] Testing release 7.4.1

Description

First stage - testing 7.4.0 #22
Second stage - testing 7.4.0 #24

RN: https://github.com/handsontable/handsontable/releases/

Builds

https://cdn.jsdelivr.net/gh/handsontable/handsontable@62db142fe201f9ade5c45cd3e921107b3d93f75b/dist/handsontable.full.css

https://cdn.jsdelivr.net/gh/handsontable/handsontable@62db142fe201f9ade5c45cd3e921107b3d93f75b/dist/handsontable.full.js

Branch
https://github.com/handsontable/handsontable/tree/release/7.4.1

Testing checklist

  • build Handsontable
  • build wrappers - React, Angular, Vue
  • check size of dist and compare with result from first stage #22 (comment)
  • execute e2e tests in various browsers
    • Microsoft Edge
    • Microsoft Dev Edge
    • Chrome
    • Firefox
    • Safari
    • Opera
    • Brave (not officialy supported)
  • mobile - manual tests
    • editor

Test cases

  • Clicking the mouse on the Handsontable and next to it,
  • Click + hold on Handsontable and next to it
  • Click through contextMenu
  • Click through dropdownMenu
  • autofill vertical & horizontal
  • Click through cells with type Numeric
  • check formulas
  • check filters
  • check comments
  • check columnSummary
  • check filters which is "Is equal" type, clicking with different buttons
  • repeat on Windows on Edge and for example Chrome
  • repeat on macOs on Chrome and Edge, Safari
  • mobile: editor, every possible feature
  • repeat what it possible on iPad

Related issues

Regression test of issue that was fixed by original 7.4.0

Pull requests

#6711 Fixed closest helper
#6709 Fix dbl click events on mobile devices (touch events)
#6624 Remove background-clip CSS prop

[HyperFormula] Verification and validation of closed issues

SVG Borders - stage 1 and stage 2

Testing release 7.4.0

Description

Needs very in-depth testing.

Branch https://github.com/handsontable/handsontable/tree/release/7.4.0
RN
Updated draft https://github.com/handsontable/handsontable/releases/tag/untagged-293540147031a514c8ad
https://gist.github.com/jansiegel/ee77384ed74105522de199804f28fe13

Builds

Min - for tests

https://gist.githack.com/aninde/42765ccf061dc35d64872d773e665a33/raw/db44b1c05c1f4f86dd598971a0dfc59289568874/handsontable.full.min.css

https://gist.githack.com/aninde/ca852b80f877ee757beffa91778fc0ed/raw/40f2da19718b870dda92e1d1226f2a120828756c/handsontable.full.min.js

Full

https://cdn.jsdelivr.net/gh/handsontable/handsontable@0e1af9c709a4b192019e6789d26dbc50dbda2fa4/dist/handsontable.full.css

https://cdn.jsdelivr.net/gh/handsontable/handsontable@0e1af9c709a4b192019e6789d26dbc50dbda2fa4/dist/handsontable.full.js

Testing checklist

  • Build a version
  • Check the size of the version
  • Build a version and install with wrappers, check their size
  • Browser e2e tests on Chrome, Firefox, Safari, Opera, Edge
    $ npm run test: e2e.dump
    file is on test/E2ERunner.html
  • Tests walkontable on Chrome, Firefox, Safari, Opera, Edge
    $ test: walkontable.dump
    file is on src/3rdparty/walkontable/test/SpecRunner.html
  • mobile - manual tests
  • test all CodeSandbox demos
  • check all related issues
  • columnSummary
  • Check the numeric type editor
    • non-integer numbers, currency, commas, number format, formulas
    • repeat above after changing the keyboard language to American
    • and after changing the keyboard language to German
    • IME after changing the language to Chinese or Japanese
  • Click through key functions on a minified version (crud, move, formulas)
  • Click through key functions (crud, move, fixing, formulas) on wrappers
  • Validation check: cannot be done before release
    • Has the number of licenses changed? cannot be done
    • check key with incorrect date - when the license expires yesterday, today and tomorrow
  • codesandbox Bot - add demo, check if bot builds new one
  • click throught contextMenu and dropdownMenu

Related issues

  • BLOCKER#6507 Fixed the problem, where the onCellMouseUp hook was fired for all mouse buttons except RMB, which was not consistent with the onCellMouseDown hook.
    To make the changes more consistent with the native dblclick event (which is triggered only for the LMB button), the onCellDblClick and onCellCornerDblClick hooks were modified to also fire only for LMB.
  • #6610 Updated moment, pikaday and numbro to their latest versions.
Maybe they were corrected by the way by handsontable/handsontable#6610 (not inside Release Notes):


Special requirements

[8.0.0-beta2] 3b Responsiveness

Description

We need to check and find every possible regression error on macOs and on Windows.

Test cases:

  • demo https://jsfiddle.net/aninde/d9actn3f/
  • dropdownMenu
  • contextMenu
  • Moving
  • Scrolling vertically
  • Scrolling horizontally
  • Resizing
  • Coping & pastng
  • Cutting
  • Selection
    • Single
    • Mutliple
    • Ranges
    • Non-continuous
  • changing size of the window
  • in modal window
    • contextMenu
    • dropdownMenu
    • comments
    • selection
  • HOT in flexbox
  • HOT in grid
  • shifted on 1,5 px
  • absolute positioning
  • relative positioning

Requirements

no regresion errors
no worse working

Documentation

[8.0.0-beta2] Acceptance sanity tests of breaking changes & new features

Description

We need to check conformance with requirements of breaking changes.
Stage 2: Acceptance tests

List of breaking changes to test with test cases handsontable/handsontable#6547
Hidden indexes aren't rendered. As a consequence hooks

  • beforeValueRender for rendered column
  • beforeRenderer for rendered column
  • afterRenderer for rendered column
  • modifyColWidth for rendered column
  • beforeStretchingColumnWidth for rendered column
  • Does getColWidth called for modifyColWidth?
    getColWidth should return 1

Renamed methods:

  • getPhysicalIndex is getPhysicalFromVisualIndex from now,
  • getVisualIndex is getVisualFromPhysicalIndex from now,
  • isSkipped is isTrimmed from now,
  • getNotSkippedIndexes is getNotTrimmedIndexes from now,
  • getNotSkippedIndexesLength is getNotTrimmedIndexesLength from now

Renamed maps:

  • The SkipMap is TrimmingMap from now
  • The VisualIndexToPhysicalIndexMap is IndexesSequence from now
  • New map: HidingMap in hiddenColumns.js

New added methods:

  • getPhysicalFromRenderableIndex: (renderableIndex: number) => number | null,
  • getVisualFromRenderableIndex: (renderableIndex: number) => number | null,
  • getRenderableFromVisualIndex: (visualIndex: number) => number | null
  • isHidden: (physicalIndex: number) => boolean
  • getFirstNotHiddenIndex: (fromVisualIndex: number, incrementBy: number) => number | null
  • getNotHiddenIndexes: (readFromCache?: boolean) => number[]
  • getNotHiddenIndexesLength: () => number
  • getRenderableIndexes: (readFromCache?: boolean) => number[]
  • getRenderableIndexesLength: () => number.

Removed:

  • hiddenColumn was removed
  • colOffset
  • rowOffset
  • The listen method doesn't have an argument from now.
  • The scrollViewportTo method has extra argument.

LMB

  • LMB click on corner select all cells
    • In iframe
    • Two instances of HOT
    • With contextMenu
    • With dropdownMenu

RMB

  • RMB click on the corner when there is no data will show all options disabled
  • except Insert column right and Insert row below when a table has data type defined by dataSchema as an array.
  • except Insert row right otherwise.
    • In iframe
    • Two instances of HOT
    • With contextMenu
    • With dropdownMenu

copyPaste & cut

  • With hiddenColumns
  • all columns within a selected range are hidden
  • just some columns within a selected range are hidden
  • skipColumnOnPaste option is enabled and in some other cases
  • With all plugins
  • when there are at least two instances of Handsontable
  • an instance is wrapped by iframe
  • when outsideClickDeselects option is set
  • when option editor is set fo false
  • when option uiContainer for the CopyPaste plugin was set (#5686)
  • when the Filters plugin is enabled
  • when DropdownMenu and ContextMenu plugins are enabled
  • when fragmentSelection option is set
  • with IME (#4662, Chinese Pinyin - Simplified)
  • when there is an external input element in DOM
  • with Filter as you type demo
  • copying data by system's menu bar and keyboard shortcuts (cmd + c, cmd + v, cmd + x)
  • different editors
  • there is no regression on the IE9+ (may be related to this line)

hiddenColumns

  • Navigation by the headers when all rows or columns are hidden work as desired.
  • With all others plugins separately
  • selection
  • Hiding cells by contextMenu - should be:
    • selecting a column on the right when there is space on right to the last selected column,
    • selecting a column on the left otherwise
    • Click on a row header will select all cells (also hidden).
    • The HiddenColumns plugin won't override renderers for the cells.
  • The TableView has been extended by countRenderableColumns method.
  • Focusing editors changed.

Plugins:

  • AutoColumnSize
  • Autofill
  • BindRowsWithHeaders
  • ColumnSorting
  • ContextMenu
  • dropdownMenu
  • ManualColumnMove
  • ExportFile + removing & adding columns
  • trimRows
  • nestedRows
  • manualColumnFreeze / manualRowFreeze
  • filters
  • manualRowMove / manualColumnMove
  • hiddenRows / hiddenColumns
  • manualRowResize / manualColumnResize
  • autoRowResize / autoColumnResize
  • columnSorting / multipleColumnSorting
  • customBorders
  • collapsibleColumns
  • PersistantState

Core functionalities:
updateSettings

  • What if I change columns property
  • What if columns is a function
  • Does it work with minSpareRows and minSpareCols
  • Does it work with minRows, minCols, maxRows, maxCols
  • Expanded heading, propagation of its children, its status shouldn’t be changed. Previously it resets the state of all its children, so expanding was propagated to all its sub-headings.
  • for nested Headers
  • for collapsible columns
  • for shorter (fewer columns)

Cell validation
CRUD operations, insertCol, removeCol, insertRow, removeRow
Move rows between fixed top, fixed bottom and main overlays
Move columns between fixed left and main overlays
nestedHeaders

Assumptions to check

  • The nested header's DOM structure should always be in sync with other header layers.
  • When the CollapsibleColumns plugin has enabled, all headers and columns should be synchronized after collapsing/expanding multiple headers in different layers;
  • selection
  • non-contiguous selection
  • loadData for shorter (fewer columns)
  • Tree-ish structures, is unacceptable to place nestedHeaders between layers of headers
    -[ ] disableVisualSelection - the header option works for rows, but not for columns.

Deprecated items

  • make list of them
  • Is there a warning in console?
  • Gantt chart
  • observeChanges
  • headerTooltips

Requirements

checking if new feature and breaking change work as described

Documentation

[Research] Bugs to report or research

Description

A list gathering bugs found during other tests to report on issue bord, after searching through the board.

Template

Description

Steps to reproduce

Demo

https://jsfiddle.net/handsoncode/8ffpsqt6/

Your environment

  • Handsontable version:
  • Browser Name and version:
  • Operating System:

Should be reported

  • issues with zoom on mobiles
  • doubled rowHeader border on Ipad during horizontal scrolling
  • lack of warning for users when they initialize HOT with customBorders out of range
  • filter indicator move after removing filltered column, similar to #6397

Should be investigate

[Angular-Hot] 5.1.1

Description

Testing release of Angular-Hansontable.
Release date: today

Builds

handsontable/angular-handsontable#203

minified https://gist.githack.com/aninde/631eef1bb32a5a245c9859cc40591525/raw/1b2eb019cdf35503cae1bd8cccc35e85a61483f8/handsontable-angular.umd.min.js

https://gist.githack.com/aninde/eb1b05edec0497f0406778a5b8ab53c9/raw/f150a845617a38718134b739d21328fd58280d9a/handsontable-angular.umd.js

Testing checklist

  • build Handsontable-Angular
  • run e2e tests in headless browser
  • run and click on chosen demo in:
    • Chrome
    • Firefox
    • Safari
    • Microsoft Dev Edge
    • Opera

Test cases

Related issues for re-test

Dynamic Columns With Ivy Compiler https://github.com/handsontable/angular-handsontable/issues/192

References

https://angular.io/guide/ivy
https://angular.io/guide/aot-compiler

[8.0.0-beta2] Stage 3a Retestings issues

Description

Retesting issues that should be fixed.

Chores

  • Is the reported bug corrected now?
  • Sensible bug hunting around the reported bug
  • if there will be compare it to Handsontable v7.4.0, maybe it is not a regression of 8.0.0-beta2
  • Check is there a regression on Chrome, Firefox, Safari, Edge, IE?

Report new bugs found to the main Handsontable repository with the number of revision in tittle e.g. [8.0.0-beta2-rev.1] Title

Test cases:

  • 1. - Fixed an issue where Hidden columns become visible when the user ran updateSettings #4121
  • 2. - Fixed an issue where using hiddenColumns and stretchH showed a redundant horizontal scrollbar #4181
  • 3. - Fixed an issue in which ff the last column was a hidden column and stretchH was enabled, the last column was displayed #4370
  • 4. - Fixed an issue where updateSettings performance was very low because of hiddenColumns being rendered #4381
  • 5. - Fixed the broken height header when both column height and hidden column were used #4631
  • 6. - Fixed an issue where collapse was not working correctly with custom cell rendrers #4716
  • 7. - Fixed an incorrect header name when user defined morec olumns in the nestedHeaders plugin #4716
  • 8. - Fixed an issue where hiddenColumns did not work properly with columnSorting #5571
  • 9. - TO BE CHECKED- Fixed an issue where manualColumnMove should work with hiddenColumns #5598
  • 10. - Fixed an issue where hiddenColumns option interfered with the keyboard movement #5704
  • 11. - Fixed an issue where after hiding the first two rows, the row headers became de-synchronized by 1px. #5817
  • 12. - Fixed an issue where hiding columns affected selection of hidden columns #5871
  • 13. - Fixed an issue where if collapsibleColumns were set to true it was impossible to cannot exit selection mode #5875
  • 14. - Fixed an issue where hiddenColumns did not work properly with autoWrapRow/autoWrapCol #5877
  • 15. - Fixed an issue on IE where hiding the first column caused a display of double border for top left corner #5881
  • 16. - Fixed an issue where nestedHeaders duplicated a header name if more columns are added #5882
  • 17. - Fixed an issue where hiddenColumns plugin unset cell's renderer #5883
  • 18. - Fixed an issue where hiddenColumns had stored visual indexes and should have used physical indexes #5909
  • 19. - Fixed an issue where additional row was added during copy/paste operations and with hidden rows/columns enabled #5961
  • 20. - Fixed an issue where hidden columns should be unrecoverable #6113
  • 21. - Fixed an issue where row selection ignored columns that are hidden at the end #6181
  • 22. - Fixed an issue where defining data with more data than used in columns caused an issue with showing column once it was hidden #6426
  • 23. - Fixed an issue where hiding rows while there was a merged area involved caused data shifting and unexpected merged area coordinates #6376
  • 24. - Fixed an issue where some headers were gone when hidden and shown again #6395
  • 25. - Fixed an issue where colHeader was truncated after moving hiddenColumn #6463
  • 26. - Fixed an issue where the last hidden column was visible upon column resizing #6557
  • 27. - Fixed an issue where with hiding columns after moved them manually #6668
  • 28. - Fixed an issue where copy-and-paste worked wrong in a cell that was then hidden and uncovered again #6742
  • 29. - Fixed an issue where too many values were pasted when the column was hidden #6743
  • 30. - Fixed an issue where expanding a collapsed column caused expanding of a child columns except for the the first one #5792
  • 31. - Fixed an issue where setting columnSorting to true (on initialization or via updateSettings) made headers non-collapsible programmatically via collapseAll method #4999

Not placed in Release notes (7.05 FYI @scarletfog )
Related to PR 6716

  • 32. currentColClassName doesn't work properly with nestedHeaders #5861
  • 33. Selection skips the highest parent #6770

Requirements

Documentation

SVG Borders - Stage 5

Fourth stage - acceptance, retests and regression test

ℹ️ not checked - means TODO

Tests to conduct

  • rem, em, Bootstrap
  • How does it look like on Firefox, Safari, Chrome, Edge and IE
  • How does it look like on mobiles and Ipad

[Tools] Test scenarios for Handsontable 8.0.0-beta2

Description

Documentation of how to test the new version 8.0.0-beta2.

Reference

Hidden Indexes refactor
handsontable/handsontable#6595

The first draft of the test plan
https://docs.google.com/document/d/1dlZR5U9crOfHQ080BFBWpPohWi4wIvtcD9gRfGNRVvQ/edit#heading=h.ffnducr35o5p

Glossary
https://www.guru99.com/test-scenario.html

Chores

  • For each requirement from the Test plan, figure out possible users actions and objectives. Determine the technical aspects of the requirement. Ascertain possible scenarios of system abuse and evaluate users with hacker's mindset.
  • List out different test scenarios that verify each feature of the software.
  • Once you have listed all possible Test Scenarios, a checklist is created to verify that each & every requirement has a corresponding Test Scenario
  • Put regression part of test scenario on the Confluence

[Tools] BrowserStack - suport for e2e test

Description

We need to integrity BrowserStack for running visual tests and make reports/prints screen with results.

We should prepare it for support browsers:

  • Chrome
  • Firefox
  • Opera
  • Edge / Windows
  • Edge / MaCOS
  • mobiles: Adnroid, Windows, iOs
  • IPad

[HyperFormula] Acceptance of arithmetic operations

Description

We need to check conformance with the requirements of arithmetic operations in HF.

Test cases:

  • addition
    • +
    • Unary + - prefix operator +
  • subtraction
    • -
    • prefix operator -
  • multiplication
    • *
    • ^
  • division
    • /
  • Irrational number
  • negative numbers
  • decimals
  • separators
  • mixed separators
  • repeat with each data type

Requirements

ODDF
Google Spreadsheet - if different or inconsistent - report
Excel - if different or inconsistent - report
other spreadsheets - if different or inconsistent - report

Documentation

[HyperFormula] Acceptance testing of build-in formulas

A checklist for the acceptance testing/ conformance of build-in formulas.

Release date: Jan 2020

Chore checklist

Testing checklist
EDIT: Choose and do precisely 3

  • All required 77 functions are supported
    • Does all parameters are supported
    • Does it work without optional parameters
    • Can parameters be a reference to another cell
    • Are the correct errors returned when something went wrong
    • How does it behave when parameters are out of bounds (eg. -1 when it should be >0)
    • passing an array of data we can give:
      • string,
      • number,
      • undefined,
      • null
      • NaN,
      • Infinity,
      • -Infinity,
      • -0, which the engine should not support. He shouldn't have crashed either
  • how zero suppression is handled In JS we can write a number as .3, but in hyperformula it is a string, not always number
  • adding and subtracting small numbers from large ones, precision
  • the maximum and minimum number served. If the type is number then there will be a JS limit, but there is no such limit in the string.
  • getValues with volatile functions https://docs.microsoft.com/en-us/office/client-developer/excel/excel-recalculation#volatile-and-non-volatile-functions
  • getAllSheetsValues with volatile functions

1 stage

Based on small evaluator group
https://docs.oasis-open.org/office/OpenDocument/v1.3/csprd02/part4-formula/OpenDocument-v1.3-csprd02-part4-formula.html#__RefHeading__711846_826425813

  • ABS 6.16.2
  • ACOS 6.16.3
  • AND 6.15.2
  • ASIN 6.16.7
  • ATAN 6.16.9
  • ATAN2 6.16.10
  • AVERAGE 6.18.3
  • AVERAGEIF 6.18.5
  • CHOOSE 6.14.3
  • COLUMNS 6.13.5
  • COS 6.16.19
  • COUNT 6.13.6
  • COUNTA 6.13.7
  • COUNTBLANK 6.13.8
  • COUNTIF 6.13.9
  • DATE 6.10.2
  • DAVERAGE 6.9.2
  • DAY 6.10.5
  • DCOUNT 6.9.3
  • DCOUNTA 6.9.4
  • DDB 6.12.14
  • DEGREES 6.16.25
  • DGET 6.9.5
  • DMAX 6.9.6
  • DMIN 6.9.7
  • DPRODUCT 6.9.8
  • DSTDEV 6.9.9
  • DSTDEVP 6.9.10
  • DSUM 6.9.11
  • DVAR 6.9.12
  • DVARP 6.9.13
  • EVEN 6.16.30
  • EXACT 6.20.8
  • EXP 6.16.31
  • FACT 6.16.32
  • FALSE 6.15.3
  • FIND 6.20.9
  • FV 6.12.20
  • HLOOKUP 6.14.5
  • HOUR 6.10.10
  • IF 6.15.4
  • INDEX 6.14.6
  • INT 6.17.2
  • IRR 6.12.24
  • ISBLANK 6.13.14
  • ISERR 6.13.15
  • ISERROR 6.13.16
  • ISLOGICAL 6.13.19
  • ISNA 6.13.20
  • ISNONTEXT 6.13.21
  • ISNUMBER 6.13.22
  • ISTEXT 6.13.25
  • LEFT 6.20.12
  • LEN 6.20.13
  • LN 6.16.39
  • LOG 6.16.40
  • LOG10 6.16.41
  • LOWER 6.20.14
  • MATCH 6.14.9
  • MAX 6.18.45
  • MID 6.20.15
  • MIN 6.18.48
  • MINUTE 6.10.12
  • MOD 6.16.42
  • MONTH 6.10.13
  • N 6.13.26
  • NA 6.13.27
  • NOT 6.15.7
  • NOW 6.10.15
    • [ ]getValues
    • [ ]getAllSheetsValues
  • NPER 6.12.29
  • NPV 6.12.30
  • ODD 6.16.44
  • OR 6.15.8
  • PI 6.16.45
  • PMT 6.12.36
  • POWER 6.16.46
  • PRODUCT 6.16.47
  • PROPER 6.20.16
  • PV 6.12.41
  • RADIANS 6.16.49
  • RATE 6.12.42
  • REPLACE 6.20.17
  • REPT 6.20.18
  • RIGHT 6.20.19
  • ROUND 6.17.5
  • ROWS 6.13.30
  • SECOND 6.10.16
  • SIN 6.16.55
  • SLN 6.12.45
  • SQRT 6.16.58
  • STDEV 6.18.72
  • STDEVP 6.18.74
  • SUBSTITUTE 6.20.21
  • SUM 6.16.61
  • SUMIF 6.16.62
    • [ ]getValues
    • [ ]getAllSheetsValues
  • SYD 6.12.46
  • T 6.20.22
  • TAN 6.16.69
  • TIME 6.10.17
  • TODAY 6.10.19
    • getValues
    • getAllSheetsValues
  • TRIM 6.20.24
  • TRUE 6.15.9
  • TRUNC 6.17.8
  • UPPER 6.20.27
  • VALUE 6.13.34
  • VAR 6.18.82
  • VARP 6.18.84
  • VLOOKUP 6.14.12
  • WEEKDAY 6.10.20
  • YEAR 6.10.23

Volatile Functions:

  1. NOW
  2. TODAY
  3. RANDBETWEEN
  4. OFFSET
  5. INDIRECT
  6. INFO (depending on its arguments)
  7. CELL (depending on its arguments)
  8. SUMIF (depending on its arguments)

[HyperFormula] Conformance: engine & comparison operators

Description

We need to check conformance of comparison operators

  • <
  • >
  • <=
  • >=
  • =
  • <>
  • all error types
  • ?
  • : (range)
  • ~
  • &
  • Comparrision to Excel
    ['"A"', '"B"', '=A1>B1']`
    Text A, Text B, Formuła
  • with enabled CASE_SENSITIVE
  • with disabled CASE_SENSITIVE
  • Does all operators are supported
  • Can parameters be a reference to another cell
  • Are the correct errors returned when something went wrong
  • How does it behave when parameters are out of bounds (eg. -1 when it should be >0)

Test cases:

Types

  • type comparison
    • same types
    • different types
  • errors handle

Objects

  • null

Numbers

  • null
  • NaN,
  • Infinity,
  • - Infinity,
  • -0, which the engine should not support. He shouldn't have crashed either
  • how zero suppression is handled In JS we can write a number as .3, but in hyperformula it is a string, not always number
  • precision
  • very big numbers
  • very small numbers
  • the maximum and minimum number served. If the type is number then there will be a JS limit, but there is no such limit in the string.

Stage 1

  • all Errors handling
  • data types
  • type conversion

Stage 2

New issue.

Documentation

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare
#1 (comment)

Parsing text to value:
https://gitlab.gnome.org/GNOME/gnumeric/blob/master/samples/excel/complex-parsing.xls

All operators and types combinations:
https://gitlab.gnome.org/GNOME/gnumeric/blob/master/samples/excel/operator.xls
GS v. https://docs.google.com/spreadsheets/d/1uwMSAOssKTo_rpbFDObPgux7BW3pIL3IiZp-FiJd1Xk/edit#gid=0

Requirements

https://docs.oasis-open.org/office/OpenDocument/v1.3/csprd02/part4-formula/OpenDocument-v1.3-csprd02-part4-formula.html#__RefHeading__1017966_715980110

[HyperFormula] Testing API - stage 1

Description

We need to check conformance with requirements of API

Due to the limited time, the tests will consist of verification of ready tests, or adding test cases.

More complicated tests e2e will be written in the next stage after developing test scenarios based on ready-made Excel sheets.

Test cases:

  • CRUD handsontable/hyperformula#26 handsontable/hyperformula#28 handsontable/hyperformula#31 handsontable/hyperformula#33 handsontable/hyperformula#29 handsontable/hyperformula#29 some test are already written, we can add more edge cases
  • events handsontable/hyperformula#135 WIP
  • named expresion handsontable/hyperformula#126 some test were already written, we can add more edge cases
  • copy, cut, paste
  • batch handsontable/hyperformula#32 handsontable/hyperformula#18 - WIP, some tests were already written, we coud add more edge cases
  • helpers handsontable/hyperformula#32 handsontable/hyperformula#30 handsontable/hyperformula#24 - Formula helpers WIP
    • Is this sheet name optional?
    • What would happen if everything is absolute?
    • What about mixed adressing?
    • Whether which formula depends on the specific Cell or sheets
    • Each function via calculate formula
    • Check with SUM
    • Add up if the given value is greater than A1 - SUMIF
    • What if there are new references?
  • language support handsontable/hyperformula#22
  • custom function supported
  • addColumns
  • addNamedExpression
  • addRows
  • addSheet
  • batch
  • calculateFormula
  • changeNamedExpression
  • clearClipboard
  • clearSheet
  • copy
  • countSheets
  • cut
  • destroy
  • disableNumericMatrices
  • doesCellHaveFormula
  • doesCellHaveSimpleValue
  • doesSheetExist
  • forceApplyPostponedTransformations
  • getAllSheetsDimensions
  • getAllSheetsFormulas
  • getAllSheetsSerialized
  • getAllSheetsValues
  • getCellFormula
  • getCellSerialized
  • getCellType
  • getCellValue
  • getCellValueType
  • getNamedExpressionValue
  • getRangeFormulas
  • getRangeSerialized
  • getRangeValues
  • getSheetDimensions
  • getSheetFormulas
  • getSheetId
  • getSheetName
  • getSheetSerialized
  • getSheetValues
  • getStats
  • isCellEmpty
  • isCellPartOfMatrix
  • isItPossibleToAddColumns
  • isItPossibleToAddRows
  • isItPossibleToAddSheet
  • isItPossibleToClearSheet
  • isItPossibleToMoveCells
  • isItPossibleToMoveColumns
  • isItPossibleToMoveRows
  • isItPossibleToRemoveColumns
  • isItPossibleToRemoveRows
  • isItPossibleToRemoveSheet
  • isItPossibleToReplaceSheetContent
  • isItPossibleToSetCellContents
  • isThereSomethingToUndo
  • listNamedExpressions
  • moveCells
  • moveColumns
  • moveRows
  • normalizeFormula
  • onNamedExpressionAdded
  • onNamedExpressionRemoved
  • onSheetAdded
  • onSheetRemoved
  • onSheetRenamed
  • onValuesUpdated
  • paste
  • removeColumns
  • removeNamedExpression
  • removeRows
  • removeSheet
  • renameSheet
  • setCellContents
  • setSheetContent
  • simpleCellAddressFromString
  • simpleCellAddressToString
  • undo
  • validateFormula
  • buildEmpty
  • buildFromArray
  • buildFromSheets

Requirements

Compatibility with http://127.0.0.1:5005/classes/_index_.hyperformulans.html

Documentation

Internal HyperFormula documentation generated on develop branch

Flow to create docs with Makefile.
Should be changed after removing Makefile.

$ npm i
$ make setup
$ make doc
$ make servedoc

[HyperFormula] Smoke testing

Description

Paste ready sheets with formulas from test data downloaded from the Internet.
Check if the spreadsheet has formulas with grep '^ =' * in the directory.

Paste the sheet into the Handsontable cell.

Testing checklist:

  • Is the table and the data rendering?
  • Is the data correct?
  • Is it counting correctly?
  • Is there error handling
  • What happens when the formula is not supported?
  • repeat on Windows IE
  • repeat on Edge
  • repeat on Chrome
  • repeat on Firefox
  • repeat on Edge
  • repeat on Safari

[Updated browser] Chrome 80

Description

Automatic tests are repeatable at the beginning of the month in the updated browser.

Reference

Chores

  • check requirements, ask devs, if they can change HOT
  • build latest Handsontable from master
  • build walkontable
  • run e2e test
  • run walkontble test
  • run mobile test
  • manual test of browser with table
    • scrolling
    • resizing window horizontally and vertically
    • all mouse events
    • keybord shortcuts
  • manual test of table
    • CRUD
    • main features
  • report bugs

Found bugs:
Examples/#2 Demo codesanbox Angular crashes after resize of window
#6710 Angular wrapper crashes after resize of window

[HyperFormula] Testing config

Description

We need to check the working of Config.ts in HF.
All options should be tested, with all parameters.

Properties
Related to comparison operators and strings - test are written in a string-cmp.spec.ts

  • accentSensitive
  • caseFirst - sorting
  • caseSensitive
  • localeLang
  • ignorePunctuation

Related to date:

  • dateFormats
  • yyyy/yy/mm
  • yyyy/mm/yy
  • mm/yy/yyyy
  • mm/yyyy/yy
  • yy/mm/yyyy
  • yy/yyyy/mm
  • leapYear1900
  • nullDate
  • nullYear

Related to numbers:
Separators:

  • decimalSeparator
  • thousandSeparator
  • functionArgSeparator

Related to language

  • language
  • errorMapping
  • localeLang

Related to matrix calculations:

  • matrixDetection
  • matrixDetectionThreshold

Related to calculations:

  • parseDate
  • precisionEpsilon
  • precisionRounding
  • smartRounding
  • stringifyDate

Related to the VLOOKUP and MATCH functions:

  • useColumnIndex
  • vlookupThreshold

Others:

  • defaultPlugins
  • chooseAddressMappingPolicy
  • functionPlugins
  • gpuMode

Methods

  • allFunctionPlugins
  • buildErrorMapping
  • functionsWhichDoesNotNeedArgumentsToBeComputed
  • getErrorTranslationFor
  • getFunctionTranslationFor
  • getRegisteredFunctions
  • numericStringToNumber
  • structuralChangeFunctions
  • valueFromParam
  • valueFromParamCheck
  • volatileFunctions

Test cases:

Properties!
Method!

Requirements

Compatibility with http://127.0.0.1:5005/classes/_config_.config.html

Documentation

Flow to run #35 (comment)

[8.0.0-beta2] 3b Usability & appearance

Description

We need to check and find every possible regression error

  • customBorders,
  • comments
  • Selection,
  • prints,
  • icons,
  • custom buttons,
  • zoom,
  • DPI,
  • editor (IME),
  • z-index,
  • Copy paste for different application
  • contextMenu
  • Alignment
  • Validation of cells
  • Searching
  • Streaching
  • Hidden column & rows
  • Trim column & rows
  • Autofill
  • Horizontal
  • Vertical
  • Going back to the cell
  • + algorithms with formulas
  • drag and drop

Requirements

no regresion errors
no worse working

Documentation

[HyperFormula] Environment testing - supplement

Description

Moved from #39

We should test also:

  • Minified build
  • Node
  • v13.11 builded, tests passed
  • v13.09 builded, tests passed
  • v12.11 builded, some tests passed, some don't
  • >=v10 builded

Additional:

  • UMD,
  • ES,
  • CommonJS (TypeScript, WebPAck, Babel)

SVG - Stage 4

Description

After fixing issues found in stage 3 #8

Builds

Testing checklist

  • build Handsontable
  • execute e2e tests in various browsers
    • Chrome
    • Firefox
    • Safari
    • Microsoft Dev Edge
    • Opera
  • execute test for mobile devices
  • mobile - manual tests

Test cases

Related issues - bugs found during stage 3 #8

Requirements

[Docs] - Minor corrections to the documentation

Descriptions

I will be reporting here minor corrections to the documentation, typos, understatements. Everything that catches the eye is incorrect, but there is no time to report or fix it right now.

Documentation

Source URL Actual result Expected result
Formula support https://handsontable.com/docs/8.3.1/demo-formula-support.html E(2)=2.718281828459045 E(2) = 7,...
Formula support https://handsontable.com/docs/8.3.1/demo-formula-support.html SQRT2()? SQRT()
Using callbacks https://handsontable.com/docs/7.3.0/tutorial-using-callbacks.html afterCreateRow< afterCreateRow
------------- ------------- ------------- -------------

8.0.0 release

Description

Issue gathering tasks related to maintaining the highest quality of the upcoming version 8.0.0-beta2

Branch

https://cdn.jsdelivr.net/gh/handsontable/[email protected]/dist

Test plan

1 stage: Acceptance tests - smoke tests
checking if the version is building correctly, whether it can be tested further
1a #45

  • build with every wrapper
  • React
  • Angular
  • Vue
  • Check their size

1b #50

  • Build and run documentation
  • Correct version of documentation is builded
  • Updated demos - click through all the demos, checking all plugins separately

1c done by developers during code review
Performance lab

  • fast tests, differences on diagrams, comparing to older versions

Stage 2: Acceptance tests - sanity tests #46

  • checking if new feature and breaking change work as described

Stage 3a Retesting fixed issues #49

  • Retesting all issues that should be fixed.
  • Is the reported bug corrected now?
  • Sensible bug hunting around the reported bug.
  • Check is there a regression on all supported browsers.

Stage 3b Regression testing - bug hunting

  • - on every wrapper #55
  • Usability & appearance #47
  • Responsiveness #48
  • Accessibility
    • contrast
  • Main feauters
  • Mobile
    • editor
    • Responsiveness
  • Mouse events, LMB i RMB
  • Keyboards shortcuts

Stage 4 Regression testing - Environment testing

  • Running ready test on all supported browsers

Stage 5 Performance lab

  • check performance of last-ready for release version for blogpost

Releted

SVG Borders - Stage 3

Third stage - acceptance, retests and regression test

Builds:

25.01.2020
https://gist.githack.com/aninde/10277ad24d47c3d30acabb28dfce1ef6/raw/acf47d912207662dba90b88c43080e4cc27ba709/handsontable.full.min.js

https://gist.githack.com/aninde/bd6678e760fdb4bceac2341bdde431ee/raw/f1e14c930dd4ae4d26df2709f2085027a6eb6ffd/handsontable.full.min.css

  • After fixing bugs found on the second stage #5
    ℹ️ not checked - means TODO

Bugs founded during stage 2

Bugs founded during stage 3

Tests to conduct

  • Conformance to requirements of svg-borders_PR
  • Testing checklist handsontable/handsontable#6467
  • Manually on codesandbox demo and local version handsontable/handsontable#6157 (comment)
  • Test performance
    • Put the performance at test, create as many borders as possible
    • Do we have performance lab test?
  • Performance with and without autoColumnSize
  • How does it look like on Firefox, Safari, Chrome, Edge and IE
  • How does it look like on mobiles and Ipad
  • Test with Bootstrap and other CSS frameworks

Retests from stage 1 handsontable/handsontable#6467 (comment)

moved to new issue #15

[Firefox 71] manualRowResize e2e test does not pass after browser update

Unlucky one e2e test does not pass on Firefox 71. The same test passed on an earlier version.

manualRowResize > handle position in a table positioned using CSS's `transform` > should display the handles in the correct position, with holder as a scroll parent
Expected 719 to be close to 720, 0.

Testing release 7.4.0 second stage

Description

Supplement after first stage of testing 7.4.0 during code freeze #22 after @AMBudnik found blocker in #6507

Builds

https://cdn.jsdelivr.net/gh/handsontable/handsontable@667163c31860dd8545eb1b62c92042f6e0f8667d/dist/handsontable.full.js

https://cdn.jsdelivr.net/gh/handsontable/handsontable@667163c31860dd8545eb1b62c92042f6e0f8667d/dist/handsontable.full.css

Testing checklist

  • build Handsontable
  • check size of dist and compare with result from first stage #22 (comment)
  • execute e2e tests in various browsers
    • Microsoft Edge
    • Microsoft Dev Edge
    • Chrome
    • Firefox
    • Safari
    • Opera
    • Brave (not officialy supported)
  • execute test for mobile devices
  • mobile - manual tests

Test cases

  • Clicking the mouse on the Handsontable and next to it,
  • Click + hold on Handsontable and next to it
  • contextMenu
  • dropdownMenu
  • autofill
  • with enabled filters which is "Is equal" type, clicking with different buttons
  • repeat on Windows on Edgu and IE and for example Chromie
  • repeat on macOs on Chrome and Edge, Safari
  • repeat on Linux (Ubuntu) on FF
  • repeat what it possible on iPad

Related issues

Regression test of issue that was fixed by original 7.4.0

Requirements

#6701 Fix inconsistency in how the context menu closes

[8.0.0-beta1] 1b stage: Acceptance tests - smoke tests - documentation

Description

Stage 1b

  • Build and run documentation
  • Correct version of the documentation is builded
  • Updated demos - click through all the demos, checking all plugins separately

Removed or changed:

  • hiddenColumn was removed
  • colOffset
  • rowOffset
  • The listen method doesn't have an argument from now.
  • The scrollViewportTo method has extra argument.

Documentation

[HyperFormula] Environment testing

Description

We need to customize ready tests to run in the various environments listed below.

In addition, it is worth to click and check the operation of individual HF elements.

Environment testing

  • Operation system: Windows 10
    • Chrome
    • Firefox
    • Safari
    • Edge
    • Internet Explorer 11
    • UC Browser
    • QQ Browser (can't be done)
    • Sogou Browser
    • older version of Windows via BrowserStack
  • Operation system: MacOs Catalina 10.15.4
    • Chrome
    • Firefox
    • Safari
    • Edge Chromium
    • UC Browser (can't be done)
    • QQ Browser
    • Sogou Browser (can't be done)
    • older version of macOs via BrowserStack
  • mobile browsers:
    • Chrome
    • Firefox for Android
    • Firefox for iOS
    • Safari iOs
    • Samsung Internet
    • UC Browser
    • Opera browser with free VPN (from Google Play) 58.2.2878.53403

handsontable/hyperformula#1

  • Minified build
  • Node
    - [x] v13.11 builded, tests passed
    - [x] v13.09 builded, tests passed
    - [x] v12.11 builded, some tests passed, some don't
    - [x] >=v10 builded
  • Mobile: Ipad, iOs 13?

Additional:

  • UMD, ES, CommonJS (TypeScript, WebPAck, Babel)

Requirements

Works as intended
There are no regression errors

Documentation

[8.0.0-beta2] List of found bugs

List of bugs found during tests of Handsontable 8.0.0-beta2

    • [8.0.0.-beta2-rev1] When there's no data headers do not hide with their columns #6851
    • [8.0.0-beta2-rev1] When nestedRows are enabled we cannot call updateSettings #6855
    • [8.0.0.-beta2-rev2] NestedRows: we are able to remove a parent - but only if it's not the last one. #6860
    • [8.0.0.-beta2-rev3] Hidden columns are not frozen #6864
    • [8.0.0.-beta2-rev3] Can't resize column just after the hidden one #6867
    • [8.0.0.-beta2] Performance degradation: Undo for removing columns #6868
    • [8.0.0.-beta2-rev1] Data from a merged cell is gone if it's the first part is hidden - empty editor #6872
    • [8.0.0.-beta2-rev1] Merged area is not highlighted if a part of it is hidden #6873
    • [8.0.0.-beta2-rev3] Show column doesn't work when column has been moved #6874
    • [8.0.0.-beta2-rev3] Comment doesn't show the value #6875
    • [8.0.0.-beta2-rev3] Focus is staying in both - in the header input and cell textarea #6877
    • [8.0.0.-beta2-rev1] We cannot autofill a merged cell if it's partly hidden #6878
    • [8.0.0.-beta2-rev3] nestedHeaders and hiddenColumns don't work together #6879~
    • [8.0.0.-beta2-rev3] No information about deprecated items #6882
    • [8.0.0.-beta2-rev5] Error when hovering over the fixed column header immediately next to the hidden column and setting manualColumnResize to true. #6885
    • [8.0.0-beta2-rev1] We cannot move more than 1 row when rows are nested #6891
    • [8.0.0-beta2-rev6] Invalid comment position right behind the hidden column #6896
    • [8.0.0.-beta2-rev6] The amount of rows remains the same even when we try to add new empty rows and NestedRows are enabled. #6897
    • [8.0.0.-beta2-rev3] The view of the table moves when clicked LMB on the corner in iframe #6883
    • [8.0.0-beta2-rev1] rowHeaders are shifted after clicking on corner when every columns are hidden #6902
    • [8.0.0-beta2-rev7] Clicking on corner doesn't select all cells and view wrongly is shifted #6915
    • [8.0.0.-beta2-rev7] Wrong index for guideline when moves rows #6917
    • [8.0.0-beta2-rev1] Selection/autofill rectangle is half-cut when we scroll unfixed columns #6937
    • [8.0.0-beta2-rev8] Undoing removal of nestedrows when all collapsed parents are selected don't work #6941
    • [8.0.0-beta2-rev1/rev7] Undo of removed columns/rows covers too many columns/rows #6964
    • [8.0.0.-beta2-rev7] When we undo removing of columns/rows selection covers too many columns/rows #6963
    • [8.0.0.-beta2-rev11] Cannot get on the merged cell by navigating with the keyboard. #6981
    • [8.0.0.-beta2-rev12] The error occurs after using autoFill when we perform 3 specific steps #6995
    • [8.0.0-beta2-rev1] We cannot add a column on the left when there's no data (data is filtered out) #6998
    • [8.0.0-beta2-rev7] When fixedRowsBottom are applied and we filter out all data fixedRowsBottom remains #7004
    • [8.0.0-beta.2-rev13] Selecting a partially-hidden merged cell gives it a wrong color overlay. #7010
    • TrimRows with fixed overlays #7011
    • [8.0.0-beta2-rev11] Resizing rows and fast vertical scrolling breaks resizing #7038
    • [8.0.0-beta2-rev1] afterSelectionEnd returns nothing when all rows are trimmed #7046
    • [8.0.0-beta2-rev11] Moving resized row / selection on fixed, scrolled table causes errors #7049
    • [8.0.0-beta2-rev1] HOT's not highlighting the header A with a grey background when the method selectCell is called on a hidden cell #7052
    • [8.0.0-beta2] Handsontable does not appear on IE9 #7054
    • [8.0.0-beta2-rev1] If the first row is hidden but selected autofill does not work #7066
    • [8.0.0.-beta2-rev2] Filter by value list is blank if we pick Filter by condition after choosing a value from Filters. #6861
    • [8.0.0-beta2-rev1/rev14] Broken newly added row when all of rows are trimmed. #7065
    • [8.0.0-beta1-rev1] Custom borders are changing coordinates when data is hidden #7057
    • [8.0.0-beta1-rev1] custom border is added on the wrong coordinates if data is hidden before the cell with the border #7058
    • [8.0.0-beta2-rev1] inconsistency beetween contextMenu and dropdownMenu when all rows are trimmed #7060
    • [8.0.0-beta2-rev7] When we select cell 0,0 and hide the data clicking on column A with RMB allows us to add new rows #7051
    • [8.0.0-beta2-rev19] Fixed columns and rows doesn't work while scrolling #7086
    • [8.0.0-beta2-rev18] Editor is shifted when we use fixedRowsBottom (double top border) #7087
    • [8.0.0-beta2-rev13] When custom borders are added to merged cells they do not appear on the age load and cause a TypeError #7088
    • [8.0.0-beta2-rev18] We cannot move the selection from a rowHeader to a colHeaders (and the opposite) using CMD/CTRL +SHIFT #7089
    • [8.0.0-beta2-rev12] Nested headers aren't correctly highlighted after clicking in the corner #7096
    • [8.0.0.-beta2-rev2] NestedRows: we are able to remove a parent - but only if it's not the last one.
      #6860
    • [8.0.0-beta2-rev22] no lower border on headers when all rows are trimmed #7106
    • [8.0.0.-beta2-rev1] nestedHeaders and hiddenColumns don't work together #6879
    • [8.0.0-beta2-rev19/rev18] Clicking DEL or BACKSPACE on header or corner when all rows are trimmed causes error #7108

Angular-Handsontable

    • [8.0.0-beta2-rev1] npm audit after build #206
    • [8.0.0-beta2-rev7] some properties doesn't exist on type GridSettings #207

Bugs regression from Handsontable 8.0.0-beta1

    • [8.0.0.-beta1] Data is gone if we undo removed columns #6865
    • [8.0.0.-beta1] We get null instead of an element in getCell method for (-1, -1) coords if all columns are hidden #6911
    • [8.0.0.-beta1] Removing nested rows don't work in some cases + hooks get wrong parameters #6890
    • [8.0.0.-beta1] We cannot add (alter method) more than one row while using nestedRows #6898

Bugs regression from Handsontable 8.0.0-rc

    • [8.0.0-rc1] Can't collapsed many parent of nestedRows. #6316

Out of scope

    • [8.0.0-beta2-rev1] When editor is opened cell content is not selected #6954
    • [8.0.0.-beta2-rev5] The wrong data in merge cells after the hidden column and additionally an error occurs. #6888
    • [8.0.0-beta2-rev5] Custom border is misaligned when columns are hidden and columns are fixed #7059

[HyperFormula] Kitchensink testing

When https://github.com/handsontable/hyperformula/issues/17 will be ready.

Testing checklist:

  • Compliance with requirements
  • Manual tests comparing working to Excel, Google Spreadsheet and Libra Ofice
  • Testing current API & hooks
  • Integration with Handsontable
  • Formula plugin
    • Any numbers,
    • negative and
    • positive
    • as float
    • or integer;
    • Arithmetic operations such as:
    • +,
    • -,
    • /,
    • *,
    • %,
    • ^;
    • Logical operations such as: AND(),
    • OR(),
    • NOT(),
    • XOR();
    • Comparison operations such as: =, >, >=, <, <=, <>;
    • All JavaScript Math constants such as: PI(), E(), LN10(), LN2(), LOG10E(), LOG2E(), SQRT1_2(), SQRT2();
    • Error handling: #DIV/0!, #ERROR!, #VALUE!, #REF!, #NAME?, #N/A, #NUM!;
    • String operations such as: & (concatenation eq. =-(2&5) will return -25);
    • All excel formulas defined in formula.js;
    • Relative and absolute cell references such as: A1, $A1, A$1, $A$1;
    • Build-in variables such as: TRUE, FALSE, NULL;
    • Custom variables;
    • Nested functions;
    • Dynamic updates.
  • Working of Handsontable should be compliance with requirements
  • CRUD operations
  • Sorting
  • Filtering
  • contextMenu
  • Formulas
  • Formulas update
  • Value calculation
  • Integration of formulas in many Handsontable
  • Editors with a value other than text

Related issues:

https://github.com/handsontable/handsontable/labels/Formulas

  • #3908 perhaps an issue on formula
  • #3975 Dropdown and Autocomplete should work without loading extra plugins
  • #4066 Formula does not get initially evaluated with column mapping
  • #4154 formulas not init with nestedRows
  • #4353 When the cell type is numeric, the formula does not work properly.
  • #4357 handsontable/handsontable#4357
  • #4430 Formulas does not apply for some cells
  • #4654 After inserting a row, an auto-updated formula displays incorrect value
  • #4668
    Formulas do not recalculate when we move columns
  • #4675 AVERAGE formula updates incorrectly
  • #4678 Formulas recalculates when we block a change via beforeChange
  • #4693 Handsontable should work without formula parser enabled
  • #5279 Bug in formula parsing when using nested data structures.
  • #5455 Column with formulas doesn't filter properly
  • #5550 after remove columns get wrong sourceData with formulas enabled
  • #5613 continus removeRow cause error in formula situation
  • #5635 Formulas don't update after row is removed
  • #5689 beforeChange event i cahnge a value, but the relate formula calculate wrong
  • #5852 Add case sensitive options for filters formulas
  • #5870 Calculation issue when IF is used on FALSE data
  • #5872 AVERAGE doesn't allow to define numbers as strings
  • #6248 Using clear() method breaks down formulas
  • #6336 Formulas are incorrectly calculated / auto updated on sort
  • #/6359 Formula is converted to a value if merged areas are included
  • #6480 It seems that the Formulas plugin doesn't work well with sorting

Requirements

handsontable/handsontable#6466

[HyperFormula] Small group evaluator

Description

The first milestone should be to meet ODFF 1.3 Small Group Evaluator requirements. This gives us an MVP as defined by the OpenFormula standard.

Most of those requirements are already met. Some of the functions are already on our list handsontable/hyperformula#13

Requirements for Small Group Evaluator

From ODFF 1.3:

  • A) 3.7 It shall implement at least the limits defined in the “Basic Limits” section #59
  • B) It shall implement the syntax defined in these sections on syntax:
    • 4.11.11 Criteria
    • 5.2 Basic Expressions #76
    • 5.3 Constant Numbers
    • 5.4 Constant Strings
    • 5.5 Operators
      • Prefix "-" has higher precedence than "^"
      • Reference intersection has a higher precedence than reference union
      • Precedence can be overridden by using parentheses
      • "Unnecessary" parentheses and white space should be retained, people add them to improve readability.
    • 5.6 Functions and Function Parameters
    • 5.7 Nonstandard Function Names (spec)
      • Not supported function should compute as an Error other than #N/A
      • Functions that are not part of the ODFF spec should be namespaced if possible
    • 5.8 References #64 #65 #66
    • 5.11 Simple Named Expressions
    • 5.12 Constant Errors #63
    • 5.14 Whitespace #68
      • Ignore the whitespace in calculations
      • Support four whitespace types: SPACE (U+0020), CHARACTER TABULATION (U+0009), LINE FEED (U+000A), CARRIAGE RETURN (U+000D)
      • Retain whitespace entered by the user for formatting purposes
  • C) It shall implement all implicit conversions for the types it implements, at least
    • 6.3.2 Conversion to Scalar
    • 6.3.5 Conversion to Number
      • Number, return as is
      • Logical, return 0 if FALSE, and 1 if TRUE
      • Text
      • Reference ... 😱
    • 6.3.12 Conversion to Logical
      • Number is TRUE for <>0 and FALSE for 0
      • Depends on implementation
        • Return always FALSE
        • Return always Error
        • Convert "false" (ignore case) to FALSE, "true" to TRUE. Fallback to FALSE or return an Error if conversion failed. Locale specific, use "prawda" for pl-PL etc.
      • Logical as is
      • Reference, convert to scalar first. Empty cell is FALSE.
    • 6.3.14 Conversion to Text
      • Number is transformed to Text with no whitespace
      • Text is returned as is
      • Logical returns "TRUE" and "FALSE" as uppercase strings
      • Reference: conversion to scalar. If empty, return empty string. (fails on range)
    • Reference
    • and when an expression returns an Error
  • D) It shall implement the following operators (which are all the operators except reference union (~)):
  • E) It shall implement at least the following functions as defined in this specification:
    • ABS 6.16.2 #13
    • ACOS 6.16.3 #13
    • AND 6.15.2 #13
    • ASIN 6.16.7 #13
    • ATAN 6.16.9 #13
    • ATAN2 6.16.10
    • AVERAGE 6.18.3 #13
    • AVERAGEIF 6.18.5 #13
    • CHOOSE 6.14.3
    • COLUMNS 6.13.5
    • COS 6.16.19 #13
    • COUNT 6.13.6
    • COUNTA 6.13.7
    • COUNTBLANK 6.13.8 #13
    • COUNTIF 6.13.9 #13
    • DATE 6.10.2 #13
    • DAVERAGE 6.9.2
    • DAY 6.10.5 #13
    • DCOUNT 6.9.3
    • DCOUNTA 6.9.4
    • DDB 6.12.14
    • DEGREES 6.16.25 #13
    • DGET 6.9.5
    • DMAX 6.9.6
    • DMIN 6.9.7
    • DPRODUCT 6.9.8
    • DSTDEV 6.9.9
    • DSTDEVP 6.9.10
    • DSUM 6.9.11
    • DVAR 6.9.12
    • DVARP 6.9.13
    • EVEN 6.16.30 #13
    • EXACT 6.20.8
    • EXP 6.16.31
    • FACT 6.16.32
    • FALSE 6.15.3 #13
    • FIND 6.20.9
    • FV 6.12.20
    • HLOOKUP 6.14.5
    • HOUR 6.10.10
    • IF 6.15.4 #13
    • INDEX 6.14.6
    • INT 6.17.2 #13
    • IRR 6.12.24
    • ISBLANK 6.13.14
    • ISERR 6.13.15
    • ISERROR 6.13.16
    • ISLOGICAL 6.13.19
    • ISNA 6.13.20
    • ISNONTEXT 6.13.21
    • ISNUMBER 6.13.22
    • ISTEXT 6.13.25
    • LEFT 6.20.12
    • LEN 6.20.13
    • LN 6.16.39 #13
    • LOG 6.16.40 #13
    • LOG10 6.16.41 #13
    • LOWER 6.20.14
    • MATCH 6.14.9
    • MAX 6.18.45 #13
    • MID 6.20.15
    • MIN 6.18.48 #13
    • MINUTE 6.10.12
    • MOD 6.16.42 #13
    • MONTH 6.10.13
    • N 6.13.26
    • NA 6.13.27
    • NOT 6.15.7 #13
    • NOW 6.10.15
    • NPER 6.12.29
    • NPV 6.12.30
    • ODD 6.16.44 #13
    • OR 6.15.8 #13
    • PI 6.16.45 #13
    • PMT 6.12.36
    • POWER 6.16.46 #13
    • PRODUCT 6.16.47
    • PROPER 6.20.16
    • PV 6.12.41
    • RADIANS 6.16.49
    • RATE 6.12.42
    • REPLACE 6.20.17
    • REPT 6.20.18
    • RIGHT 6.20.19
    • ROUND 6.17.5 #13
    • ROWS 6.13.30
    • SECOND 6.10.16
    • SIN 6.16.55 #13
    • SLN 6.12.45
    • SQRT 6.16.58 #13
    • STDEV 6.18.72
    • STDEVP 6.18.74
    • SUBSTITUTE 6.20.21
    • SUM 6.16.61 #13
    • SUMIF 6.16.62 #13
    • SYD 6.12.46
    • T 6.20.22
    • TAN 6.16.69 #13
    • TIME 6.10.17
    • TODAY 6.10.19
    • TRIM 6.20.24
    • TRUE 6.15.9 #13
    • TRUNC 6.17.8 #13
    • UPPER 6.20.27
    • VALUE 6.13.34
    • VAR 6.18.82
    • VARP 6.18.84
    • VLOOKUP 6.14.12
    • WEEKDAY 6.10.20
    • YEAR 6.10.23
  • F) It need not evaluate references that contain more than one area.
  • G) It need not implement
    • inline arrays 5.13
    • complex numbers 4.4
    • and the reference union operator 6.4.13

Reference

https://www.oasis-open.org/committees/documents.php?wg_abbrev=office

[Tools] Make more advanced apps for test

Description

Preparation of more advanced but at the same time universal test environments to test Handsontable in conditions as close as possible to those used by our clients.

Stage 1

  • design based on use cases
  • analysis with marketing department
  • analysis with support department

Stage 2

  • implementation

[HyperFormula] Testing

Description

Testing the new product - HyperFormula.
Epic. Work was done within smaller issues.

Project repository

To Do

  • Gathering requirements
  • Requirements analysis
  • Rethinking the testing stages
  • Establishing tests
  • Planning chores
  • Test implementation & development

Releted issues

Stage 1:
#1 [HyperFormula] Acceptance testing of build-in formulas
#2 [HyperFormula] Kitchensink testing
#14 Conformance: engine & comparison operators based on small evaluator gruop
#19 Support for IE 10 and 11

Stage 2 before release
#27 Smoke testing based on spreadsheet files
#29 Acceptance testing based on spreadsheet files

Acceptance testing before release

1. Syntax - based on ODFF

2. API handsontable/hyperformula#7

3. Environment

  • Operation system: Windows, IE 9? IE 10, IE 11, Edge, Chrome, Firefox handsontable/hyperformula#1
  • Operation system: macOS
  • Browsers: Firefox, Chrome, Safari, Edge, Opera?
  • Minified build
  • Node
  • Mobile: Android, iOs
  • Mobile: Ipad, iOs 13?
  • UMD, ES, CommonJS (TypeScript, WebPAck, Babel)

3a. Performance

  • Performance testing (required by the spec?)
  • Compare performance with 7.2.2 formula-plugin

4. Functions - test cases will be based on ODFF

  • * wildcards -> *? regx? after handsontable/hyperformula#220 #31
  • ready interpreter tests
  • functions from handsontable/hyperformula#221
  • Does all parameters are supported
  • Does it work without optional parameters
  • Can parameters be a reference to another cell
  • Are the correct errors returned when something went wrong
  • How does it behave when parameters are out of bounds (eg. -1 when it should be >0)
  • It is possible to implement remaining functions

5. Buisness examples

Stage before release plugin for Handsontable
#2 KitchenSink test

[HyperFormula] Testing API - testing with user story - stage 2

Description

After making sure that the API works correctly #35

  • we should invent more complicated test cases
  • write the use cases
  • write tests

Test cases:

Examples [WIP]
run blank sheet, paste data from ready sheet
run blank sheet, paste formulas, rename sheet
run blank sheet, run sheet with formulas with references to new, add a new sheet, rename new added

Requirements

Documentation

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.