Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test more #21

Merged
merged 4 commits into from
Apr 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/on-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ jobs:
- name: Run unit tests
run: inv utest
- name: Run acceptance tests
run: inv atest
run: |
rfbrowser init chromium
inv atest
- uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
Expand Down
21 changes: 21 additions & 0 deletions atest/json_lib.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import json
from pathlib import Path

from robot.api import logger


def compare_translations(file: Path):
with Path(__file__).parent.parent.joinpath(
"robotframework_browser_translation_fi", "translation.json"
).open("r") as file_object:
expected_data = json.load(file_object)
expected_keywords = [kw["name"] for kw in expected_data.values()]
logger.info(f"expected_keywords: {expected_keywords}")
with file.open("r") as file_object:
data = json.load(file_object)
keywords = data["keywords"]
for keyword in keywords:
logger.info(keyword)
name = keyword["name"]
name = name.replace(" ", "_").lower()
assert name in expected_keywords, f"name '{name}' not in {expected_keywords}"
22 changes: 19 additions & 3 deletions atest/translation.robot
Original file line number Diff line number Diff line change
@@ -1,6 +1,22 @@
*** Settings ***
Library Browser
Library Browser language=FI
Library Process
Library OperatingSystem
Library json_lib.py

*** Test Cases ***
Translation 1
Pass Execution This is example
Translation Works With Translation
Uusi Sivu https://github.com/MarketSquare/robotframework-browser-translation-fi

LibDoc Works With Translation
[Setup] Remove File ${CURDIR}/Browser.json
${json_kw_speck} = Join Path ${CURDIR} Browser.json
${cmd} = Join Command Line
... python
... -m
... robot.libdoc
... --format=json
... Browser::language=FI
... ${json_kw_speck}
Run Process ${cmd} shell=True
Compare Translations ${json_kw_speck}
9 changes: 6 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,6 @@ exclude = '''
lint.unfixable = []
exclude = [
"__pycache__",
"generated",
"wrapper",
"browser.pyi",
]
target-version = "py38"
lint.select = [
Expand Down Expand Up @@ -106,6 +103,7 @@ lint.select = [
[tool.ruff.lint.per-file-ignores]
"tasks.py" = ["T201"]
"utest/*" = ["INP001"]
"atest/*" = ["INP001"]

[tool.pytest.ini_options]
testpaths = ["utest"]
Expand All @@ -121,3 +119,8 @@ configure = [
"RenameTestCases:enabled=True:capitalize_each_word=True",
"RenameKeywords:enabled=True",
]

[tool.mypy]
exclude = [
"utest/*",
]
8 changes: 4 additions & 4 deletions robotframework_browser_translation_fi/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -193,15 +193,15 @@
"doc": "Suorittaa annetun JavaScript-koodin valituilla elementeillä tai sivulla.\n\n | =Argumentit= | =Kuvaus= |\n | ``selector`` | Valitsin, joka ratkaistaan ja välitetään JavaScript-funktiolle. Tämä on ensimmäinen argumentti, jonka funktio vastaanottaa, jos ei ole ``${None}``. ``selector`` on valinnainen ja sitä voidaan jättää pois. Jos annetaan valitsin, funktio on välttämätön, jossa on argumentti elementin käsittelijän tallentamiseksi. Esimerkiksi ``(elementti) => document.activeElement === elementti`` Katso `Elementtien löytäminen` -osio lisätietoja valitsimista. |\n | ``*funktio`` | Kelvollinen JavaScript-funktio tai JavaScript-funktion runko. Näitä argumentteja voidaan käyttää luettavan monirivisen JavaScriptin kirjoittamiseen. |\n | ``arg`` | Lisäargumentti, joka voidaan välittää JavaScript-funktiolle. Tämän argumentin on oltava JSON-sarjoitettavissa. Elementtikäsittelijöitä ei tueta. |\n | ``all_elements`` | Määrittää, annetaanko funktiolle vain yksi valitsimella löydetty elementtikäsittelijä vai jos asetettu arvoon ``True``, kaikki löydetyt elementit annetaan taulukkona. |\n\n Esimerkki ``all_elements=True``:n kanssa:\n | ${tekstit}= Arvioi JavaScript painike\n | ... (elementit, arg) => {\n | ... let teksti = []\n | ... for (e of elementit) {\n | ... console.log(e.innerText)\n | ... teksti.push(e.innerText)\n | ... }\n | ... teksti.push(arg)\n | ... return teksti\n | ... }\n | ... all_elements=True\n | ... arg=Vain toinen teksti\n\n Avainsana käyttää tiukkaa tilaa, jos ``all_elements`` on ``False``. Katso `Elementtien löytäminen` lisätietoja tiukasta tilasta.\n\n [https://github.com/MarketSquare/robotframework-browser/tree/main/atest/test/06_Examples/js_evaluation.robot | Käyttöesimerkit. ]\n\n [https://forum.robotframework.org/t//4251|Kommentti >>]\n "
},
"highlight_elements": {
"name": "korosta elementtejä",
"name": "korosta_elementtejä",
"doc": "Lisää korostuksen elementteihin, jotka vastaavat ``selector``-valitsinta. Tarjoaa tyylisäädön.\n\n Palauttaa korostettujen elementtien lukumäärän. Avainsana ei epäonnistu, jos `locator` ei vastaa yhtäkään elementtiä\n sivulla. Avainsana ei vieritä elementtejä näkymään, ja korostettu elementti voi olla näkymän ulkopuolella. Käytä `Scroll To Element`-avainsanaa vierittääksesi elementti näkymään.\n\n | =Argumentit= | =Kuvaus= |\n | ``selector`` | Valitsimet, jotka halutaan korostaa. Katso `Elementtien etsiminen` -osio tarkempien valitsintietojen saamiseksi. |\n | ``duration`` | Määrittää kuinka kauan valitsin pysyy korostettuna. Oletusarvoisesti ``5s`` => 5 sekuntia. |\n | ``width`` | Asettaa korostuksen reunuksen leveyden. Oletusarvo on 2px. |\n | ``style`` | Asettaa reunuksen tyylin. Oletusarvo on pisteviiva. |\n | ``color`` | Asettaa reunuksen värin. Kelvollisia värejä ovat esimerkiksi: ``red``, ``blue``, ``yellow``, ``pink``, ``black`` |\n\n Avainsana ei epäonnistu, vaikka valitsin ratkaisisi useisiin elementteihin.\n\n Esimerkki:\n | `Korosta elementit` input#kirjautumispainike kesto=200ms\n | ${lukumäärä} = `Korosta elementit` input#kirjautumispainike kesto=200ms leveys=4px tyyli=solid väri=\\#FF00FF\n | Pitäisi olla yhtä suuri ${lukumäärä} ${5}\n\n [https://forum.robotframework.org/t//4294|Kommentti >>]\n "
},
"set_assertion_formatters": {
"name": "aseta väitteen muotoilijat",
"name": "aseta_väitteen_muotoilijat",
"doc": "Aseta väitteiden muotoilijat avainsanoille.\n\n | =Argumentit= | =Kuvaus= |\n | ``formatters`` | Avainsanojen ja muotoilijoiden sanakirja, jossa avain on avainsanan nimi, johon muotoilijat ovat sovellettu. Sanakirjan arvo on luettelo muotoilijoista, jotka ovat käytössä. Määritellyn avainsanan muotoilijat korvataan aina. Tyhjä luettelo poistaa kaikki muotoilijat avainsanasta. Jos ``formatters`` on tyhjä sanakirja, silloin kaikki muotoilijat poistetaan kaikista avainsanoista. |\n | ``scope`` | Määrittää muotoilijan eliniän, mahdolliset arvot ovat Global, Suite ja Test. |\n\n Katso `FormatterTypes` -tyypin dokumentaatiota lisätietoja varten.\n\n On mahdollista määrittää omia muotoilijoita lambda-funktioina.\n\n Esimerkki:\n | `Aseta väitteiden muotoilijat` {\"Hanki teksti\": [\"strip\", \"normaalitilassa välit\"]} # Tämä muuttaa kaikki välit yhdeksi välilyönniksi ja poistaa välilyönnit merkkijonon alusta ja lopusta.\n | `Aseta väitteiden muotoilijat` {\"Hanki otsikko\": [\"sovelletaan odotettuun\",\"lambda x: x.replace(' ', '')\"]} # Tämä poistaa kaikki välit merkkijonosta.\n "
},
"check_checkbox": {
"name": "valiste valintaruutu",
"name": "valiste_valintaruutu",
"doc": "Tarkistaa valintaruudun tai valitsee valintapainikkeen, jonka löytää ``selector``-valitsimen avulla.\n\n | =Argumentit= | =Kuvaus= |\n | ``selector`` | Valintaruudun valitsin. Katso `Elementtien etsiminen` -osio tarkempien valitsintietojen saamiseksi. |\n | ``force`` | Aseta Trueksi ohittaaksesi Playwrightin [https://playwright.dev/docs/actionability | Toimintakyvyn tarkistukset]. |\n\n Avainsana käyttää tiukkaa tilaa, katso `Elementtien etsiminen` lisätietoja tiukasta tilasta.\n\n Ei tee mitään, jos elementti on jo tarkistettu/valittu.\n\n [https://forum.robotframework.org/t//4235|Kommentti >>]\n "
},
"clear_text": {
Expand Down Expand Up @@ -357,7 +357,7 @@
"doc": "Palauttaa viittauksen Playwrightin [https://playwright.dev/docs/api/class-locator|Locator]-objektiin.\n\n Viittausta voidaan käyttää myöhemmissä valitsimissa.\n\n\n | =Argumentit= | =Kuvaus= |\n | ``valitsin`` | Valitsin, josta on haettava . Katso `Elementtien etsiminen` -osio lisätietoja valitsimista. |\n\n Avainsana käyttää tiukkaa tilaa, katso `Elementtien etsiminen` lisätietoja tiukasta tilasta.\n\n Esimerkki:\n | ${elementti} = `Hae elementti` \\#käyttäjätunnuskenttä\n | ${valinta_arvo} = `Hae ominaisuus` ${elementti} >> vaihtoehtoYksi arvo # Valitsin ratkaistaan sivulta.\n | ${valinta_arvo} = `Hae ominaisuus` ${elementti} >> vaihtoehtoKaksi arvo # Valitsin ratkaistaan uudelleen sivulta.\n\n [https://forum.robotframework.org/t//4269|Kommentti >>]\n "
},
"get_element_by": {
"name": "hae_elementti avulla",
"name": "hae_elementti_avulla",
"doc": "Mahdollistaa elementtien paikantamisen niiden ominaisuuksien perusteella.\n\n Valintastrategioita voi olla useita Playwright-strategioita, kuten AltText tai Label.\n Katso lisätietoja [https://playwright.dev/docs/locators|Playwright Locators] -sivulta.\n\n | =Argumentit= | =Kuvaus= |\n | ``paikannusstrategia`` | Käytettävä SelectionStrategy. Viittaa Playwrightin ``page.getBy***`` -toimintoihin. Katso https://playwright.dev/docs/locators |\n | ``teksti`` | Teksti, jonka perusteella elementti paikannetaan. |\n | ``tarkka`` | Määrittääkö etsittävän tarkan osuman: isot ja pienet kirjaimet huomioiden koko merkkijono. Oletusarvo on epätosi. Sitä ei huomioida, kun etsitään säännöllisellä lausekkeella. Huomaa, että tarkka osuma poistaa välilyönnit. Tällä ei ole vaikutusta, jos käytetään RegExpia tai jos TestID:a käytetään strategiana. |\n | ``kaikki_elementit`` | Jos tosi, palauttaa kaikki sopivat elementit listana. |\n\n Tämä avainsana toteuttaa seuraavat Playwright-toiminnot:\n - [https://playwright.dev/docs/api/class-page#page-get-by-alt-text|page.getByAltText]\n - [https://playwright.dev/docs/api/class-page#page-get-by-label|page.getByLabel]\n - [https://playwright.dev/docs/api/class-page#page-get-by-placeholder|page.getByPlaceholder]\n - [https://playwright.dev/docs/api/class-page#page-get-by-test-id|page.getByTestId]\n - [https://playwright.dev/docs/api/class-page#page-get-by-text|page.getByText]\n - [https://playwright.dev/docs/api/class-page#page-get-by-title|page.getByTitle]\n\n ``page.getByRole`` tukee `Hae elementti roolin mukaan`-avainsanaa.\n\n Jos elementti on haettava iframe:sta, valitsimen etuliite on määritettävä käyttäen `Aseta valitsimen etuliite`-avainsanaa, joka sisältää ``>>>`` lopetuksena.\n\n [https://forum.robotframework.org/t//5937|Kommentti >>]\n "
},
"get_element_by_role": {
Expand Down
2 changes: 1 addition & 1 deletion tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def utest(ctx):

@task
def atest(ctx):
ctx.run("robot -L debug --outputdir atest/output atest")
ctx.run("python -m robot -L debug --outputdir atest/output atest")


@task
Expand Down
3 changes: 2 additions & 1 deletion utest/test_translation.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,5 +53,6 @@ def test_keyword_names_are_unique(data: dict):


def test_keyword_names_no_space(data: robotframework_browser_translation_fi.Language):
for translation in data:
for translation, value in data.items():
assert " " not in translation, translation
assert " " not in value["name"], value