In previous versions of the application, the meta.json of add-ons were not validated against the defined schema. This could lead to potentially invalid add-ons within the application.
The missing validation had now been added and enforced.
Invalid add-ons will be automatically disabled while upgrading.
To check for invalid add-ons prior to the upgrade, follow these steps:
Open up a shell to the application environment, e.g. by connecting to Kubernetes and selecting the application pod with the backend container.
Execute ./manage.py shell_plus to run a shell within the application itself.
Copy and run the following snippet:
importjsonfromzipfileimportZipFilefromjsonschemaimportvalidatefromjsonschema.exceptionsimportValidationErrordefcheck():print("--- Running addon checks...")withopen("/usr/src/app/w3syse/customtools/resources/meta.schema.json","r")asf:schema=json.load(f)forcustom_toolinCustomTool.objects.only("pk","latest_version__data","latest_version__name").iterator():c=custom_tool.latest_versionwithZipFile(c.data.derivatives["original"].file,"r")asf:meta=json.loads(f.read("meta.json"))try:validate(instance=meta,schema=schema)frontend=meta.get("frontend",{})ifmeta.get("interfaces")andnot"tagName"infrontend:raiseValidationError(message="Interfaces defined but no tag name (json-path: $frontend.tagName). Delete them or specify a tag.",path=("interfaces",))exceptValidationErrorase:print(f"Addon '{c.name}' is invalid and needs to be fixed prior to upgrading (URL: /configuration/custom-tools/{custom_tool.pk})")print(f" Error: {e.message} (json-path: ${'.'.join(e.path)})")print("--- Checks finished. Any errors printed above need to be fixed prior to upgrading the application!")check()# actually run the script
Any invalid add-ons will be printed out, e.g.:
Addon 'Model Viewer' is invalid and needs to be fixed (URL: /configuration/custom-tools/68f7dcce-e447-4fca-ad9b-edc1abdc9c28)
Error: 'identifier' is a required property (json-path: $)
Fix the aforementioned errors in the meta.json of the addon and re-upload it or remove the add-on from the application.
Run the snippet again until all errors have been resolved.
Summary of major changes
Create and apply status report templates
MDM managers can create status report templates globally under > Configuration > Project > Status report templates. Note: Only users who have the permissions under Others > Status report template are authorized to create or modify status report templates. Please adjust your permissions and roles accordingly.
Project managers can add the appropriate status report templates to their projects. This makes the templates available for reporting by simulation / test engineers. The status report templates are displayed in a new area next to the project requirements grid.
Status report templates
Compare test cases and requirements with MDM
This feature relates to the requirements grid in
Project.
When you right-click on a requirement, the context menu now includes the following options:
Compare test case to MDM
Compare single requirement with MDM
Use case: MDM test cases and MDM requirements occasionally need to be updated, for example, if the context has changed. Now project managers can easily compare their project test cases and project requirements with the MDM equivalents, and adopt the changes as needed. This means, project managers now have a tool to easily keep their projects up-to-date. Further information.
Note: It is also possible to select multiple requirements in the grid (ctrl. + click). In this case, the options in the context menu have slightly different names. For example, if you select two requirements, then the options are called Compare 2 test cases to MDM and Compare 2 requirements with MDM.
Add-ons can specify how they work with a special meta.json within their root folder. The file has been reworked and a new .addon.yaml has been introduced. This opens up more features.
New feature
It is now possible to add groups of requirements to a test case. It is also possible to add groups of test cases to a project.
[#4773]
This feature relates to two areas:
The MDM test cases, which are found under > Configuration > MDM > Test cases. Now you can add entire groups of requirements to a test case. This saves you time because you do not need to add each requirement individually. Further information.
The requirements grid in
Project.
Now you can add entire groups of test cases to a project. This saves you time because you do not need to add each test case individually. Further information.
Add entire groups of requirements
New feature
It is now possible to compare project test cases and project requirements with their MDM equivalents.
[#5306]
This feature relates to the requirements grid in
Project.
When you right-click on a requirement, the context menu now includes the following options:
Compare test case to MDM
Compare single requirement with MDM
Use case: MDM test cases and MDM requirements occasionally need to be updated, for example, if the context has changed. Now project managers can easily compare their project test cases and project requirements with the MDM equivalents, and adopt the changes as needed. This means, project managers now have a tool to easily keep their projects up-to-date. Further information.
Note: It is also possible to select multiple requirements in the grid (ctrl. + click). In this case, the options in the context menu have slightly different names. For example, if you select two requirements, then the options are called Compare 2 test cases to MDM and Compare 2 requirements with MDM.
Compare with MDM
New feature
It is now possible to create and manage status report templates in the configuration area.
[#5965]
There is now a new area called Status report templates, which is found under > Configuration > Project > Status report templates. Here, MDM managers can add new status report templates and modify existing templates.
Create new status report template
Note: Only users who have the permissions under Others > Status report template are authorized to create or modify status report templates. Please adjust your permissions and roles accordingly.
New feature
It is now possible to manage status report templates in the project requirements grid.
[#5966]
This feature relates to the requirements grid in
Project.
There is a new area that displays status report templates next to the project requirements grid. Here, product managers can:
add status report templates to the project. This makes them available for reporting by simulation / test engineers.
view status reports grouped by template.
filter the requirements in the grid, i.e. only display those requirements that relate to a specific status report template.
delete status report templates that don’t have public/private status reports attached to them.
toggle active templates that already contain public/private reports.
Status report templates
New feature
It is now possible to view selected photos and videos in a carousel.
[#6169]
This feature relates to the test grid in
Result.
Specifically, it relates to the Photos and Videos tabs. If the tab contains a large number of photos/videos, then the user can click on to display the photos/videos as a list. Now users can select the relevant photos/videos (ctrl. + click) and right-click to open a context menu with the option Open carousel. This option only displays the selected photos/videos in the carousel, rather than all of the photos/videos that are included in the tab.
Open carousel for selected photos only
New feature
MDM test cases now have a side panel with details and context information.
[#6035]
This feature relates to the MDM test cases, which are found under > Configuration > MDM > Test cases. Now you can click on a test case in the overview and then click on the icon to expand a side panel. The side panel displays details about the test case and its context.
Side panel of MDM test cases
New feature
Project requirements now include a 'State' field.
[#5914]
This feature relates to the requirements grid in
Project.
Here, users can see a requirement’s state, i.e. they can now see whether a requirement is active or inactive. This feature includes the following aspects:
Individual project requirements now include a State field. When editing a requirement, users can specify whether the requirement is active or inactive.
The requirements grid now includes a State column. Requirements can be grouped, sorted and filtered by their state.
If requirements are grouped by test case, then the state of the test case is also displayed.
The context menu now includes the options Toggle active test case and Toggle active requirement. These options allow users to activate/deactivate test cases and requirements directly in the grid.
Project requirement state
New feature
The MDM test cases grid now includes a 'Discipline' column.
[#5933]
This feature relates to the MDM test cases grid, which is found under > Configuration > MDM > Test cases. This grid now includes a Discipline column, which shows the disciplines that were selected for the test case. It is also possible to group, sort and filter test cases in the grid by their discipline.
New feature
Users with the 'Can view role' permission can now see which permissions are set for a global role.
[#5762]
This feature relates to the global roles, which can be accessed by navigating to > Configuration > User management > Global roles. It is now possible to click on a role in the overview and then click on to expand a side panel. The side panel displays a read-only permission tree, which allows users to see which permissions are set for the role.
Note: The side panel is accessible to users who have the permission Can view role and to users who have the permission Can change role. However, the permission tree in the side panel is always displayed as read-only. That means, users who have editing rights can not edit the permissions in the side panel. They need to navigate to the edit page to do so.
Side panel for role permissions
Improvement
Improvements were made to the startup performance of Result.
]
Improvement
More fields are taken into consideration when comparing project requirements and test cases with their MDM equivalents.
[#6225]
Newly created views are now directly selected after having been created.
[#6069]
This improvement relates to all of the grids that use the view feature, e.g. the test grid, MDM requirement grid and project requirement grid. Once a user has configured a view, the view is automatically selected.
Improvement API, UI
The jobs list now displays the date and time when a job was last updated.
]
This improvement relates to the jobs list, which can be accessed by clicking on in the tool bar. The jobs list now includes an Updated at column, which specifies when the job was last modified.
Feature removal
The packages celery and celery-beat were removed from the application and the database.
[#5942]
Bug fix
After resizing the screen, the sidebar now adapts to the current screen size.
[#6116]
This fix relates to those menus that have a sidebar, e.g. the requirements grid in
Project.
Here, users can click on to expand or collapse the sidebar. Furthermore, users can resize the sidebar by dragging its edge. In the past, if a user resized the sidebar, and then resized the entire window, the sidebar’s resize function was suddenly broken. This behavior has been fixed.
Bug fix
Debugging a calculation rule now only updates the input attributes that were actually edited.
[#6191]
This fix relates to the Apply calculation rule function, which can be accessed by navigating to
Result
and right-clicking on a test in the grid. Specifically, it relates to the debug view, which can be accessed by clicking on on the far right. In the past, if a user changed an input attribute and clicked on Calculate again, then all of the input attributes were updated (even the attributes that were not changed). This led to a problem if the unchanged attributes were write-protected. This behavior has been fixed. Now only those input attributes are updated that were actually edited.
Bug fix
Existing workspaces are now updated rather than new workspaces being created.
[#5784]
In the past, new workspaces were occasionally saved to the backend despite there already being a workspace available for the selected preset. This resulted in the number of workspaces accumulating and the performance decreasing. This behavior has been fixed.
Bug fix API
Fixed 'Connection refused' warnings when trying to connect to the backend container.
[#6268]
Bug fix UI
Job details can now be opened in a new tab.
[#5634]
This fix relates to the jobs overview, which can be accessed by navigating to > Configuration > Jobs. In the past, the job details could not be opened in a new tab. This made it difficult for users to work with jobs efficiently. For example, there was not an easy way for users to compare multiple jobs. This behavior has been fixed. Users can now right-click on a job and open its details in a new tab.
Bug fix
Jobs list no longer breaks with an error and an empty list.
[#6197]
This fix relates to the jobs list, which can be accessed by clicking on in the tool bar. In the past, the grid was not successfully loaded and an error was thrown. This behavior has been fixed. The grid is now correctly initialized.
Bug fix
Jobs overview no longer displays tasks from other users.
[#6177]
This fix relates to the jobs overview, which can be accessed by navigating to > Configuration > Jobs. In the past, the overview displayed tasks from other users. This behavior has been fixed. Users now only see their own jobs.
Bug fix UI
Jobs overview now displays state icons in color.
[#6194]
This fix relates to the jobs overview, which can be accessed by navigating to > Configuration > Jobs. In the past, the overview displayed state icons in black and white only. As a result, the icons were difficult to tell apart. This has been fixed. The icons are now displayed in color.
Bug fix UI
Line breaks are now correctly displayed in project requirements comments.
[#6195]
This fix relates to the requirements grid in
Project.
Specifically, it relates to the comments that can be entered while reporting the status. In the past, line breaks could be entered into the comment field, but they were lost upon saving. This behavior has been fixed. Line breaks are now correctly displayed in the comments.
Bug fix
Periodic execution of an add-on no longer changes its modification date.
[#6238]
This fix relates to the add-ons, which can be accessed by navigating to > Configuration > Add-ons. Specifically, it relates to those add-ons that are executed periodically ( ). In the past, the add-on’s modification date, i.e. the date displayed in the Modified column, was changed each time the add-on was executed. This behavior has been fixed.
Bug fix
Test attribute panel excel export.
]
Bug fix
The date and time of upload are now displayed correctly for project documents.
[#6235]
This fix relates to the documents that are saved in
Project.
In the past, the Upload column was empty. This has been fixed. The Upload column now displays the date and time when the document was uploaded.
Bug fix
The debug context menu is no longer grayed out.
[#6065]
This fix relates to the Apply calculation rule function, which can be accessed by navigating to
Result
and right-clicking on a test in the grid. Specifically, it relates to the debug view, which can be accessed by clicking on on the far right. In the past, when a user right-clicked on a result, the Debug context matching context menu was grayed out. The context menu remained disabled until the attributes had finished loading. This was misleading as it suggested that the debug context matching was not available. This behavior has been fixed. The context menu is now enabled by default.
Bug fix
The loading indicator is now displayed correctly when loading many project documents.
[#6203]
This fix relates to the documents that are saved in
Project.
In the past, when loading many project documents, e.g. over 100, the loading indicator got stuck and was displayed infinitely. This behavior has been fixed.
Bug fix
The requirements grid now automatically refreshes to display newly added test cases.
[#6056]
This fix relates to the requirements grid in
Project.
In the past, the grid did not automatically refresh after adding a test case. That means, the newly added test case was not automatically displayed in the grid. This behavior has been fixed.
Bug fix
The set as project status function now correctly resets fields that were not written in the new status.
]
Other
It is now possible to download a package containing the code modules for the frontend.
[#5960]
The package can be downloaded by navigating to > About. The download link is located at the bottom of the page. Here you will also find a short text, which provides further information about the package.
API changes
Breaking
Type RequirementValuePrivateCreateMutationPayload was removed
Breaking
Type RequirementValuePrivateCreateMutationInput was removed
Breaking
Type RequirementValuePrivateUpdateMutationPayload was removed
Breaking
Type RequirementValuePrivateUpdateMutationInput was removed
Breaking
Type RequirementValueCreateMutationPayload was removed
Breaking
Type RequirementValueCreateMutationInput was removed
Breaking
Type RequirementValueUpdateMutationPayload was removed
Breaking
Type RequirementValueUpdateMutationInput was removed
Breaking
Type RequirementValueSavePrivateMutationPayload was removed
Breaking
Type RequirementValueSavePrivateMutationInput was removed
Breaking
Type ProjectTestCaseDeriveMutationPayload was removed
Breaking
CustomToolVersionType.name type changed from String! to String
Breaking
CustomToolVersionType.interfaces type changed from JSONDict to GenericScalar
Breaking
CustomToolVersionType.identifier type changed from String! to String
Breaking
Input Field clientMutationId removed from input type ProjectTestCaseDeriveMutationInput
Breaking
Input Field mdmTestCases removed from input type ProjectTestCaseDeriveMutationInput
Breaking
Field inTestCase was removed from object type LoadMdmRequirementsType
Breaking
Field inProject was removed from object type LoadMdmRequirementsType
Breaking
Input Field selected removed from input type LoadStatusReportTemplatesInput
Breaking
Removed argument desktop from Query.allCustomToolVersions
Breaking
Removed argument name_Icontains from Query.allCustomToolVersions
Breaking
Removed argument name_Iexact from Query.allCustomToolVersions
Breaking
Input Field name removed from input type CustomToolVersionAttributesInputType
Breaking
Input Field author removed from input type CustomToolVersionAttributesInputType
Breaking
Input Field description removed from input type CustomToolVersionAttributesInputType
Breaking
Input Field interfaces removed from input type CustomToolVersionAttributesInputType
Breaking
Input Field identifier removed from input type CustomToolVersionAttributesInputType
Breaking
Input Field version removed from input type CustomToolVersionAttributesInputType
Breaking
Field updateRequirementValue was removed from object type Mutation
Breaking
Field savePrivateFromRequirementValue was removed from object type Mutation
Breaking
Field updateRequirementValuePrivate was removed from object type Mutation
Breaking
Field createRequirementValuePrivate was removed from object type Mutation
Breaking
Field createRequirementValue was removed from object type Mutation
Breaking
Mutation.deriveProjectTestCase type changed from ProjectTestCaseDeriveMutationPayload to ProjectTestCaseDeriveMutation
Non-Breaking
Type HistoricalProjectThresholdType was added
Non-Breaking
Type HistoricalProjectThresholdTypeConnection was added
Non-Breaking
Type HistoricalProjectThresholdTypeEdge was added
Non-Breaking
Type HistoricalProjectRequirementAttachmentType was added
Non-Breaking
Type HistoricalProjectRequirementAttachmentTypeConnection was added
Non-Breaking
Type HistoricalProjectRequirementAttachmentTypeEdge was added
Non-Breaking
Type LoadMdmAttributeValueResponseType was added
Non-Breaking
Type LoadMdmAttributeValueType was added
Non-Breaking
Type HistoricalMdmRequirementType was added
Non-Breaking
Type HistoricalMdmRequirementTypeConnection was added
Non-Breaking
Type HistoricalMdmRequirementTypeEdge was added
Non-Breaking
Type HistoricalMdmRequirementDocumentType was added
Non-Breaking
Type HistoricalMdmRequirementDocumentTypeConnection was added
Non-Breaking
Type HistoricalMdmRequirementDocumentTypeEdge was added
Non-Breaking
Type RequirementValuePrivateUpsertMutationPayload was added
Non-Breaking
Type RequirementValuePrivateUpsertMutationInput was added
Non-Breaking
Type RequirementValueUpsertMutationPayload was added
Non-Breaking
Type RequirementValueUpsertMutationInput was added
Non-Breaking
Type ProjectTestCaseDeriveMutation was added
Non-Breaking
Type SSRMSelectionStateType was added
Non-Breaking
Type MdmAddRequirementsToTestCaseMutation was added
Non-Breaking
Type MdmAddRequirementsToTestCaseMutationInput was added
Non-Breaking
Field updatedAt was added to object type LoadMdmAttributeType
Non-Breaking
Field configuration was added to object type CustomToolVersionType
Non-Breaking
CustomToolVersionType.name description changed from A unique name for the custom tool version to Name of the addon, defaults to the identifier
Non-Breaking
CustomToolVersionType.author description changed from The author of this custom tool to Author of the addon
Non-Breaking
CustomToolVersionType.description description changed from Short description of the purpose of the custom tool to Description of the addon
Non-Breaking
CustomToolVersionType.interfaces description changed from Specifies the interfaces that the custom tool implements to Interfaces the addon supports
Non-Breaking
CustomToolVersionType.identifier description changed from A identifier for the custom tool version. The identifier must be the same in all versions belonging to a single custom tool. Allowed are up to 50 letters, numbers, underscores, hyphens or dots. to Identifier of the addon
Non-Breaking
CustomToolVersionType.version description changed from The current version of the custom tool to Version of the addon
Non-Breaking
Field obsolete was added to object type LoadProjectRequirementsType
Non-Breaking
Input Field selectedTestCase: ID was added to input type LoadProjectRequirementsInput
Non-Breaking
Input Field rowGroupCols: [SSRMColumnValueObjectType] was added to input type ProjectTestCaseDeriveMutationInput
Non-Breaking
Input Field filterModel: GenericScalar was added to input type ProjectTestCaseDeriveMutationInput
Non-Breaking
Input Field selectionStateChanges: [SSRMSelectionStateType] was added to input type ProjectTestCaseDeriveMutationInput
Non-Breaking
Input Field quickFilter: String was added to input type ProjectTestCaseDeriveMutationInput
Non-Breaking
Description for type HistoricalProjectRequirementType changed from HistoricalProjectRequirement(id, context_condition, name, description, mdm_attribute_identifier_override, mdm_attribute, mdm_requirement, original_requirement, test_case, created_by, history_id, history_date, history_change_reason, history_type, history_relation, history_user) to HistoricalProjectRequirement(id, context_condition, name, description, mdm_attribute_identifier_override, obsolete, mdm_attribute, mdm_requirement, original_requirement, test_case, created_by, history_id, history_date, history_change_reason, history_type, history_relation, history_user)
Non-Breaking
Field updatedAt was added to object type LoadTaskType
Non-Breaking
Description for Input field LoadStatusReportTemplatesInput.quickFilter changed from Quick filter value for filtering status report templates to Filter over all items by a simple string value
Non-Breaking
Field historicalProjectRequirementAttachment was added to object type Query
Non-Breaking
Field historicalProjectThreshold was added to object type Query
Non-Breaking
Field historicalMdmRequirement was added to object type Query
Non-Breaking
Field allHistoricalMdmRequirementDocuments was added to object type Query
Non-Breaking
Field historicalMdmRequirementDocument was added to object type Query
Non-Breaking
Field loadMdmAttributeValues was added to object type Query
Non-Breaking
Field allHistoricalProjectThresholds was added to object type Query
Non-Breaking
Field allHistoricalProjectRequirementAttachments was added to object type Query
Non-Breaking
Field allHistoricalMdmRequirements was added to object type Query
Non-Breaking
Argument datatype_In: [String] added to Query.allMdmAttributes
Non-Breaking
Argument nameIexact: String added to Query.allCustomToolVersions
Non-Breaking
Argument nameIcontains: String added to Query.allCustomToolVersions
Non-Breaking
Input Field obsolete: Boolean was added to input type ProjectRequirementUpdateMutationInput
Non-Breaking
Field disciplinesAggregate was added to object type LoadMdmTestCasesType
Non-Breaking
Field obsolete was added to object type ProjectRequirementType
Non-Breaking
Input Field obsolete: Boolean was added to input type ProjectRequirementAttributesInputType
Non-Breaking
Input Field configuration: JSONDict was added to input type CustomToolVersionAttributesInputType
Non-Breaking
Input Field obsolete: Boolean was added to input type ProjectRequirementCreateMutationInput
Non-Breaking
Description for type RequirementValueType changed from This model represents the actual value to a specific timestamp. It belongs to a project requirement but is independent to a requirement version. The lookup, which value was the actual one is done by the date the value was added. to This model represents the actual public value of a project requirement. Each requirement can only have exactly one value at a time, independent of the creator.
Non-Breaking
Field addMdmRequirementsToTestCase was added to object type Mutation
Non-Breaking
Field upsertRequirementValue was added to object type Mutation
Non-Breaking
Field upsertRequirementValuePrivate was added to object type Mutation
Non-Breaking
Type for argument input on field Mutation.deriveProjectTestCase changed from ProjectTestCaseDeriveMutationInput! to ProjectTestCaseDeriveMutationInput