{"id":20293018,"url":"https://github.com/gemini-testing/gemini-exports","last_synced_at":"2025-07-09T18:11:23.480Z","repository":{"id":147639677,"uuid":"105778501","full_name":"gemini-testing/gemini-exports","owner":"gemini-testing","description":"Support the exports interface for Gemini","archived":false,"fork":false,"pushed_at":"2020-05-25T16:10:06.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-14T09:16:09.708Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gemini-testing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-04T14:29:33.000Z","updated_at":"2020-05-25T16:09:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"b54ea1d5-caf2-4765-8416-a9dcf1421e12","html_url":"https://github.com/gemini-testing/gemini-exports","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gemini-testing%2Fgemini-exports","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gemini-testing%2Fgemini-exports/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gemini-testing%2Fgemini-exports/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gemini-testing%2Fgemini-exports/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gemini-testing","download_url":"https://codeload.github.com/gemini-testing/gemini-exports/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241787485,"owners_count":20020101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T15:20:43.553Z","updated_at":"2025-03-04T05:14:46.535Z","avatar_url":"https://github.com/gemini-testing.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Gemini Exports\n=======\n\n## Index\n\n- [Description](https://github.yandex-team.ru/market/gemini-exports#description)\n- [Using](https://github.yandex-team.ru/market/gemini-exports#using)\n- [Nested Suites](https://github.yandex-team.ru/market/gemini-exports#nested-suites)\n- [Suite Declaration](https://github.yandex-team.ru/market/gemini-exports#suite-declaration)\n\n## Description\nПлагин для [Gemini](https://github.com/gemini-testing/gemini/), реализующий поддержку интерфейса exports для тестов: вместо обращения к API Gemini, файл теста может экспортировать объект-декларацию.\n \n Интерфейс обратносовместим со стандартными сценариями, использующими API Gemini. Это позволяет распологать файлы тестов, использующих различные интерфейсы, в одной директории.\n\n## Using\nПросто экспортируй декларацию кейса, а плагин сформирует из неё тест-сьют:\n\n```js\nmodule.exports = {\n    suiteName: 'My Suite',\n    selector: '.my-block',\n    url: '/pathname',\n    capture(actions, find) {\n        actions.click(find('.my-block__elem'));\n    }\n}\n```\n\nЭквивалентно:\n\n```js\ngemini.suite('My Suite', (suite) =\u003e {\n    suite\n        .setUrl('/pathname')\n        .setCaptureElements('.my-block')\n        .capture((actions, find) =\u003e {\n            actions.click(find('.my-block__elem'));\n        });\n});\n```\n## Nested Suites\nИнтерфейс поддерживает декларацию дочерниих сьютов.\nДочерние сьюты наследуют значения полей `url` и `selector`, которые могут быть переопределены.\nТакже наследуются хуки `before` и `after`, но при указании их в дочернем сьюте они будут дополнены, а не переопределены.\n \nПример использования:\n```js\nmodule.exports = {\n    // Не будет выполнено никаких действий, потому что нет capture\n    suiteName: 'Parent suite',\n    url: '/some/path',\n    selector: '.selector1',\n    before(actions, find) {\n        // ...\n    },\n    after(actions, find) {\n        // ...\n    },\n    childSuites: [\n        {\n            suiteName: 'Child suite #1',\n            // переопределяет url; selector наследуется из родительского\n            url: '/another/path',\n            // Порядок выполнения: сначала родительский блок before, потом свой\n            before(actions, find) {\n                // ...\n            },\n            // Порядок выполнения: сначала свой блок after, потом родительский\n            after(actions, find) {\n                // ...\n            },\n            capture() {}\n        },\n        {\n            suiteName: 'Child suite #2',\n            // переопределяет selector; url наследуется из родительского\n            selector: '.selector2',\n            // будут выполнены родительские блоки before (до capture) и after(после capture)\n            capture() {}\n        }\n    ]\n};\n```\n\n## Suite Declaration:\nОписание ключей декларации:\n\n##### `{string} suiteName`\nИмя сьюта.\n\n___\n\n##### `{string[]|string} [selector]`\nСелектор DOM-элемента или массив селекторов, скриншоты которых будут проверяться.\n\n**По-умолчанию:** `'*'` вся страница.\n\n___\n\n##### `{URL|string} [url]`\nURL для открытия.\n\n**По-умолчанию:** `'/'`.\n\n___\n\n##### `{string[]|string} [ignore]`\nСелектор DOM-элемента или массив селекторов, которые будут проигнорированы при сравнении.\n\n___\n\n##### `{Function} [before]`\nФункция, выполняющаяся до выполнения `capture`, но после открытия страницы, указанной в `url`.\n\n___\n\n##### `{Function|Object} [capture]`\nФункция capture, на случай если стандартная не устраивает. Если передан объект, то ключ это название (например \"plain\"), а значение это функция для capture.\n\n___\n\n##### `{Function} [after]`\nФункция, выполняющаяся после выполнения `capture`.\n\n___\n\n##### `{Object[]} [childSuites]`\nМассив дочерних сьютов.\n\n___\n\n##### `{string[]|string|RegExp} [browsers]`\nЗапускать тесты только в определенных браузерах.\n\n___\n\n##### `{boolean|Object|Object[]} [skip]`\nВыключает тест.\n\n___\n\n##### `{string|RegExp} [skip.browser]`\nВыключает тест для указанных браузеров.\n\n**По-умолчанию:** `/.*/`.\n\n___\n\n##### `{string} [skip.reason]`\nПозволяет указать причину выключения теста.\n\n___\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgemini-testing%2Fgemini-exports","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgemini-testing%2Fgemini-exports","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgemini-testing%2Fgemini-exports/lists"}