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

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

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

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

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


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


Ответы (2)


arrow_upward
0
arrow_downward

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

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

|
+-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

arrow_upward
0
arrow_downward

Я решил эту проблему, создав пакет 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