For example, you open a test case in the first tab, then duplicate the tab (let's say in Chrome browser). After clicking the Update button in one of the tabs, everything looks fine, but after clicking Update in the other tab, your steps start duplicating, and you get a mess.
The problem is that the endpoint /api/cases/{id} does not check step numbering and creates duplicates.
example data
`{"id":23,"title":"test bug ","state":0,"priority":2,"type":0,"automationStatus":0,"description":"","template":1,"preConditions":"1","expectedResults":"1","folderId":1,"createdAt":"2026-03-04T10:52:18.445Z","updatedAt":"2026-03-04T10:53:03.569Z","Steps":[{"id":77,"step":"1","result":"1","createdAt":"2026-03-04T10:52:59.157Z","updatedAt":"2026-03-04T10:52:59.157Z","caseSteps":{"stepNo":1},"editState":"notChanged"},{"id":78,"step":"","result":"","createdAt":"2026-03-04T10:52:59.157Z","updatedAt":"2026-03-04T10:52:59.157Z","caseSteps":{"stepNo":2},"editState":"notChanged"},{"id":79,"step":"2","result":"2","createdAt":"2026-03-04T10:53:03.619Z","updatedAt":"2026-03-04T10:53:03.619Z","caseSteps":{"stepNo":1},"editState":"notChanged"},{"id":80,"step":"","result":"","createdAt":"2026-03-04T10:53:03.619Z","updatedAt":"2026-03-04T10:53:03.619Z","caseSteps":{"stepNo":2},"editState":"notChanged"},{"id":81,"step":"2","result":"2","createdAt":"2026-03-04T10:54:11.933Z","updatedAt":"2026-03-04T10:54:11.933Z","caseSteps":{"stepNo":1},"editState":"notChanged"}``

For example, you open a test case in the first tab, then duplicate the tab (let's say in Chrome browser). After clicking the Update button in one of the tabs, everything looks fine, but after clicking Update in the other tab, your steps start duplicating, and you get a mess.
The problem is that the endpoint /api/cases/{id} does not check step numbering and creates duplicates.
example data
`{"id":23,"title":"test bug ","state":0,"priority":2,"type":0,"automationStatus":0,"description":"","template":1,"preConditions":"1","expectedResults":"1","folderId":1,"createdAt":"2026-03-04T10:52:18.445Z","updatedAt":"2026-03-04T10:53:03.569Z","Steps":[{"id":77,"step":"1","result":"1","createdAt":"2026-03-04T10:52:59.157Z","updatedAt":"2026-03-04T10:52:59.157Z","caseSteps":{"stepNo":1},"editState":"notChanged"},{"id":78,"step":"","result":"","createdAt":"2026-03-04T10:52:59.157Z","updatedAt":"2026-03-04T10:52:59.157Z","caseSteps":{"stepNo":2},"editState":"notChanged"},{"id":79,"step":"2","result":"2","createdAt":"2026-03-04T10:53:03.619Z","updatedAt":"2026-03-04T10:53:03.619Z","caseSteps":{"stepNo":1},"editState":"notChanged"},{"id":80,"step":"","result":"","createdAt":"2026-03-04T10:53:03.619Z","updatedAt":"2026-03-04T10:53:03.619Z","caseSteps":{"stepNo":2},"editState":"notChanged"},{"id":81,"step":"2","result":"2","createdAt":"2026-03-04T10:54:11.933Z","updatedAt":"2026-03-04T10:54:11.933Z","caseSteps":{"stepNo":1},"editState":"notChanged"}``