Есть ли простой механизм для создания библиотеки объектов страницы транспортира для совместного использования между проектами?

У меня есть два проекта Angular, которые совместно используют страницы пользовательского интерфейса, и я ищу простой механизм для обмена между ними объектами страниц транспортира.

Я концептуально исследовал использование компонентов Angular, но они не используются в тестах Angular E2E. Я начал и продолжу, исследуя простые модули Typescript, и решил проверить, сделал ли кто-нибудь это.

На данный момент я не писал никакого программного обеспечения.

Ответ будет предлагать или указывать на простой механизм для обмена между ними объектами страницы транспортира.


person Rodrigo Silveira    schedule 10.09.2019    source источник


Ответы (2)


Никаких ограничений, вы можете делать все, что вам подходит.

У меня есть что-то вроде этого

|
+-node_modules
|
+-protractor-+
             |
             +-app1
             |
             +-app2
             |
             +-node_module-+
                           |
                           +-page_one
                           |
                           +-page_two

а затем в моих спецификациях требовать, чтобы ваши страницы были такими

page_one = require("page_one");

Если вы не укажете полный путь, узел будет искать node_modules папку, в которой вы находитесь. Если нет, то найденный переходит на один каталог вверх по дереву и проверяет его, пока не найдет нужный node_module

person Sergey Pleshakov    schedule 10.09.2019
comment
Извините за неточность в моем вопросе, но мои проекты находятся в отдельных репозиториях. - person Rodrigo Silveira; 10.09.2019
comment
в отдельных репозиториях git? - person Sergey Pleshakov; 10.09.2019

Я решил эту проблему, создав пакет NPM в основном проекте, в котором размещены все общие объекты страницы:

main project (shown only main files)
|
+ e2e
|
+ shared-page-objects
  |
  + index.ts
  |
  + package.json
  |
  +- page-objects
     |
     + welcome-page.ts
     + another.page.ts

Основной проект просто импортирует их. Другие проекты устанавливают пакет NPM и просто импортируют их:

import { WelcomePage} from 'shared-page-objects'
...
let wp = new WelcomePage();
...
el = wo.getEl();
... use the el on an assertion
person Rodrigo Silveira    schedule 10.09.2019