Skip to content

Commit

Permalink
Merge pull request #173 from retejs/angular19
Browse files Browse the repository at this point in the history
Angular19
  • Loading branch information
Ni55aN authored Dec 30, 2024
2 parents a85204e + 312c53c commit 7a80b67
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 24 deletions.
70 changes: 70 additions & 0 deletions src/components/content/ReteQaSheet.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<template lang="pug">
table
thead
tr
th(rowspan="2") {{ title }}
th.center(v-for="stack in stacks" :colspan="stack.versions?.length") {{ stack.name }}
tr
template(v-for="stack in stacks")
th.center(v-for="(version, i) in stack.versions" :class="cellClasses(stack, i)") {{ version }}
tbody
tr(v-for="browser in browsers")
td {{ browser }}
template(v-for="stack in stacks", :key="stack.name")
template(v-for="(version, i) in getVersions(stack, browser)" :key="version.value")
td.center(:class="{...cellClasses(stack, i), warning: version.warning }")
Tooltip(placement="top", :disabled="!version.warning" :content="version.warning?.text")
</template>

<script lang="ts" setup>
import { defineProps } from 'vue'
type Browser = string
type Version = string | number
type Stack = {
name: string
browser?: string
versions: Version[]
warnings?: {
browser: string
version: Version
text: string
}[]
}
type Props = {
title: string
stacks: Stack[]
browsers: Browser[]
}
defineProps<Props>()
function cellClasses(stack: Stack, index: number) {
return {
first: index === 0,
last: stack.versions.length - 1 === index
}
}
function getVersions(stack: Stack, browser: Browser) {
return stack.versions.map(version => {
const warning = stack.warnings?.find(warn => {
return warn.browser.split(',').includes(browser) && warn.version === version
})
return { value: version, warning }
})
}
</script>

<style lang="sass" scoped>
.center
text-align: center
.first
padding-left: 1em
.last
padding-right: 1em
.warning
color: #ffaa2a
</style>
16 changes: 10 additions & 6 deletions src/content/en/docs/19.quality-assurance.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
---
description: Learn about our quality assurance practices, including unit and E2E testing. We rely on Playwright for comprehensive testing from the user's perspective
keywords: qa,quality assurance,unit testing,e2e testing,playwright
stacks: [
{ name: "Angular", versions: [19,18,17,16,15,14,13,12] },
{ name: "Svelte", versions: [5,4,3] },
{ name: "Vue.js", versions: [3,2] },
{ name: "React.js", versions: [18,17,16], warnings: [{ browser: 'Chromium,Firefox,WebKit', version: 16, text: 'Known issue with movement' }] },
{ name: "Lit", versions: [3] }
]
browsers: ['Chromium', 'Firefox', 'WebKit']
---

# Quality assurance
Expand Down Expand Up @@ -31,13 +39,9 @@ The main purpose of this tool is to conduct regression UI testing on different c

[Playwright](https://playwright.dev) serves as the underlying technology for this testing tool and enables it to conduct tests in three different browser types: **Chromium**, **Firefox**, **WebKit**.

Additionally, we test our framework on various versions of commonly used UI frameworks, such as Angular, Svelte, Vue.js, and React.js. This gives us **27** test runs across different environments as we have a matrix of browsers and framework versions
Additionally, we test our framework on various versions of commonly used UI frameworks, such as Angular, Svelte, Vue.js, and React.js. This gives us **51** test runs across different environments as we have a matrix of browsers and framework versions

| Browser \ Stack | Angular 18 | Angular 16 | Angular 14 | Angular 12 | Svelte 5 | Svelte 4 | Svelte 3 | Vue.js 3 | Vue.js 2 | React.js 18 | React.js 16 | Lit 3 |
| :-------------: | :--------: | :--------: | :--------: | :--------: | :------: | :------: | :------: | :------: | :------: | :---------: | :---------: | :---------: |
| Chromium |||||||||||||
| Firefox |||||||||||||
| WebKit |||||||||||||
:rete-qa-sheet{title="Browser \ Stack" :stacks='stacks' :browsers='browsers'}

### Installation {#install}

Expand Down
12 changes: 6 additions & 6 deletions src/content/en/docs/4.guides/2.renderers/3.angular.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ This guide is an extension of the [Basic](/docs/guides/basic) guide and provides

This plugin offers a classic preset that comes with visual components for nodes, connections, sockets, and input controls.

Compatible with Angular 12, 13, 14, 15, 16, 17 and 18
Compatible with Angular 12, 13, 14, 15, 16, 17, 18 and 19

This plugin is **exclusively** designed for Angular applications as it requires `Injector` instance, unlike other render plugins.

Expand All @@ -31,20 +31,20 @@ This plugin is **exclusively** designed for Angular applications as it requires
:kit

```bash
npm i rete-angular-plugin rete-render-utils @angular/elements@18
npm i rete-angular-plugin rete-render-utils @angular/elements@19
```

**Please note**: this plugin relies on `@angular/elements`, which is based on Web Components. However, Web Components have a limitation - they [cannot be unregistered](https://github.com/WICG/webcomponents/issues/754). This limitation may result in the reuse of the initial Angular component instead of creating a new one when a node with the same identifier is added, potentially leading to the use of outdated data within a custom node, such as data from an injected service.

## Plugin connection {#connect-plugin}

This is an example of integration in **Angular 18**, but you can specify a different version (12, 13, 14, 15, 16, 17 or 18) in the import that matches the version of your application.
This is an example of integration in **Angular 19**, but you can specify a different version (12, 13, 14, 15, 16, 17, 18 or 19) in the import that matches the version of your application.

These versions have been compiled with Ivy.

```ts
import { AreaPlugin } from "rete-area-plugin";
import { AngularPlugin, Presets, AngularArea2D } from "rete-angular-plugin/18";
import { AngularPlugin, Presets, AngularArea2D } from "rete-angular-plugin/19";

type AreaExtra = AngularArea2D<Schemes>;

Expand Down Expand Up @@ -86,7 +86,7 @@ node.addControl('my-control', new ClassicPreset.InputControl("number", {
If you want to add different types of controls, you can return the necessary component in the `control` handler of `customize` property.

```tsx
import { ControlComponent } from "rete-angular-plugin/18";
import { ControlComponent } from "rete-angular-plugin/19";
import { MyButtonComponent } from './my-button.component'

render.addPreset(Presets.classic.setup({
Expand Down Expand Up @@ -154,7 +154,7 @@ The implementation of `CustomNodeComponent` is available in the **custom-node.co
You can add an extra condition to apply this component only to specific nodes.

```ts
import { NodeComponent } from "rete-angular-plugin/18";
import { NodeComponent } from "rete-angular-plugin/19";

render.addPreset(Presets.classic.setup({
customize: {
Expand Down
16 changes: 10 additions & 6 deletions src/content/uk/docs/19.quality-assurance.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
---
description: Дізнайтеся про наші методи забезпечення якості, включаючи юніт тестування та тестування E2E. Ми покладаємося на Playwright для комплексного тестування з точки зору користувача
keywords: qa,забезпечення якості,юніт тестування,e2e тестування,playwright
stacks: [
{ name: "Angular", versions: [19,18,17,16,15,14,13,12] },
{ name: "Svelte", versions: [5,4,3] },
{ name: "Vue.js", versions: [3,2] },
{ name: "React.js", versions: [18,17,16], warnings: [{ browser: 'Chromium,Firefox,WebKit', version: 16, text: 'Відома проблема з переміщенням' }] },
{ name: "Lit", versions: [3] }
]
browsers: ['Chromium', 'Firefox', 'WebKit']
---

# Контроль якості
Expand Down Expand Up @@ -31,13 +39,9 @@ keywords: qa,забезпечення якості,юніт тестування

[Playwright](https://playwright.dev) слугує базовою технологією для цього інструменту тестування та дає змогу проводити тести в трьох різних типах браузерів: **Chromium**, **Firefox**, **WebKit**.

Крім того, ми тестуємо наш фреймворк на різних версіях UI фреймворків, таких як Angular, Svelte, Lit, Vue.js і React.js. Це дає нам **18** тестових прогонів у різних середовищах, оскільки у нас є матриця браузерів і версій фреймворку
Крім того, ми тестуємо наш фреймворк на різних версіях UI фреймворків, таких як Angular, Svelte, Lit, Vue.js і React.js. Це дає нам **51** тестових прогонів у різних середовищах, оскільки у нас є матриця браузерів і версій фреймворку

| Браузер \ Стек | Angular 18 | Angular 16 | Angular 14 | Angular 12 | Svelte 5 | Svelte 4 | Svelte 3 | Vue.js 3 | Vue.js 2 | React.js 18 | React.js 16 | Lit 3 |
| :------------: | :--------: | :--------: | :--------: | :--------: | :------: | :------: | :------: | :------: | :------: | :---------: | :---------: | :---------: |
| Chromium |||||||||||||
| Firefox |||||||||||||
| WebKit |||||||||||||
:rete-qa-sheet{title="Браузер \ Стек" :stacks='stacks' :browsers='browsers'}

### Встановлення {#install}

Expand Down
12 changes: 6 additions & 6 deletions src/content/uk/docs/4.guides/2.renderers/3.angular.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ keywords: angular,рендерінг

Цей плагін пропонує класичний пресет, який містить візуальні компоненти для вузлів, з’єднань, сокетів і елементів керування введенням.

Сумісний з Angular 12, 13, 14, 15, 16, 17, і 18
Сумісний з Angular 12, 13, 14, 15, 16, 17, 18 і 19

Цей плагін розроблено **ексклюзивно** для додатків Angular, оскільки для нього потрібен екземпляр `Injector`, на відміну від інших плагінів візуалізації.

Expand All @@ -31,20 +31,20 @@ keywords: angular,рендерінг
:kit

```bash
npm i rete-angular-plugin rete-render-utils @angular/elements@18
npm i rete-angular-plugin rete-render-utils @angular/elements@19
```

**Зверніть увагу**: цей плагін покладається на `@angular/elements`, який базується на Веб компонентах. Однак Веб компоненти мають обмеження — їх [реєстрацію не можна скасувати](https://github.com/WICG/webcomponents/issues/754). Це обмеження може призвести до повторного використання початкового компонента Angular замість створення нового, коли додається вузол із тим самим ідентифікатором, що потенційно може призвести до використання застарілих даних у кастомному вузлі, таких як дані з ін'єктованого сервісу.

## Підключення планіга {#connect-plugin}

Це приклад інтеграції в **Angular 18**, але ви можете вказати іншу версію (12, 13, 14, 15, 16, 17 або 18) в імпорті, яка відповідає версії вашого додатку.
Це приклад інтеграції в **Angular 19**, але ви можете вказати іншу версію (12, 13, 14, 15, 16, 17, 18 або 19) в імпорті, яка відповідає версії вашого додатку.

Ці версії були скомпільовані за допомогою Ivy.

```ts
import { AreaPlugin } from "rete-area-plugin";
import { AngularPlugin, Presets, AngularArea2D } from "rete-angular-plugin/18";
import { AngularPlugin, Presets, AngularArea2D } from "rete-angular-plugin/19";

type AreaExtra = AngularArea2D<Schemes>;

Expand Down Expand Up @@ -86,7 +86,7 @@ node.addControl('my-control', new ClassicPreset.InputControl("number", {
Якщо ви хочете додати різні типи контролів, ви можете повернути необхідний функціональний компонент в обробнику `control` властивості `customize`.

```tsx
import { ControlComponent } from "rete-angular-plugin/18";
import { ControlComponent } from "rete-angular-plugin/19";
import { MyButtonComponent } from './my-button.component'

render.addPreset(Presets.classic.setup({
Expand Down Expand Up @@ -154,7 +154,7 @@ render.addPreset(Presets.classic.setup({
Ви можете додати додаткову умову для застосування цього компонента лише до певних вузлів.

```ts
import { NodeComponent } from "rete-angular-plugin/18";
import { NodeComponent } from "rete-angular-plugin/19";

render.addPreset(Presets.classic.setup({
customize: {
Expand Down

0 comments on commit 7a80b67

Please sign in to comment.