Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Peter Tesler
    @vptes1
    Hi guys. I'm here, just not as active as before. I'll still be available to approve pull requests, etc. if the need arises.
    Thanks for all of your continued support!
    Craig Waite
    @craigvl
    @vptes1 Great thanks.
    Craig Waite
    @craigvl
    @sarimarton @vptes1 So we should update https://smashtest.io/ to indicate that selenium-standalone is the best option for both Windows and Mac? If so is the website code for https://smashtest.io/ on github?
    Marton Sari
    @sarimarton
    @craigvl Sorry for the late reply, I didn't notice that I don't receive notifications for a while. Yeah, the wording should be updated that either one of the methods should work, but it's not related to Mac vs Windows - as @vptes1 confirmed to me too.
    mendhak
    @mendhak
    Has anyone been able to set a screen resolution when running a smashtest? I see the capabilities/options page, which points at Selenium's documentation, but I'm at a loss as to what I need to set. It's very difficult to wade through it and various StackOverflow posts mentioning different things. I'm just randomly applying values but the screenshots being produced are still 1000x750.
    Open Chrome 
    
        Set custom capabilities {
    
            g('browser capabilities', {
                "browserName": "chrome",
                "platformName": "linux",
                "screenResolution": "1920x1080",
                "resolution": "1920x1080",
                "se:options": {
                    "timeZone": "US/Pacific",
                    "screenResolution": "1920x1080"
                }
                });
        }
    DorkForce
    @DorkForce

    Should I be able to use Smashtest against an internally-hosted Moon server? The instructions my company gives for standard javascript connection are as follows:

    var webdriverio = require('webdriverio');
    
    var options = {
      host: 'https://moon.myCompany.com/wd/hub',
      desiredCapabilities: {
        browserName: 'chrome',
        version: '86.0',
        enableVNC: false,
        enableVideo: false
      }
    };
    var client = webdriverio.remote(options);

    And I was launching Smashtest with cls; smashtest --test-server=https://moon.myCompany.com/wd/hub against this test:

    Set custom capabilities {
        g('browser capabilities', {
            'browserName': 'Firefox',
            'version': '87',
            'enableVNC': false,
            'enableVideo': false
        });
    }
    
    Open Firefox
    
        Navigate to 'google.com'
    
            Type 'hello world[enter]' into 'textbox'
    
            Type 'hello universe[enter]' into 'textbox'

    But I receive UNABLE_TO_VERIFY_LEAF_SIGNATURE unable to verify the first certificate for each Navigate step.

    2 replies
    potjerodekool
    @potjerodekool

    I have an application with a login page which calls a rest service. How do I mock the api call? I tried the code below in my smashtest but I get a network error in my application.

    Mock auth {
    await mockHttp('POST', 'http://localhost/auth/authenticate/', '{ "authToken": "ey437854"}');
    }

    slowmonkey
    @slowmonkey

    Hi,

    Is there a way to get all elements div elements that has a classname of 'classnameX' and click on it and then take a screenshot without having to write a code block/javascript?

    Basically I want to do the following:

    Get all the div elements with a class of 'tabs' on a web page and click on it.
    Then wait 30s for the page to load because it has lots of visuals on it.
    Then scroll to every div element within a div.grid-layout element to view the visuals generated on that tab to take a screenshot.

    Is there a way for me to do all that without having to write a boat load of javascript?

    slowmonkey
    @slowmonkey
    For instance I want to do something like this that leverages the branching of smashtest. But it's saying elem.click is not a function.
    * Get report tabs {
         return await $$('.tab');
    }
    
    {reportTab} = Get report tabs
    
        Click {reportTab}
    slowmonkey
    @slowmonkey

    So, I've discovered there is no way to loop through a list of elements with a list of actions.

    So, what I had to do was to use the ordinal prop and manually look at how many elements I needed to act upon.

    So the code looks like this:

    Open Chrome
    
        On homepage {
            props ({
                'report tab': '.tab'
            })
        }
    
            Click '1st report tab'
    
            Click '2nd report tab'
    
            Click '3rd report tab'
    
            Click '4th report tab'

    This only shows if there was one operation. But what if I had a set of operations?

    Open Chrome
    
        On homepage {
            props ({
                'report tab': '.tab'
            })
        }
    
            Click '1st report tab'
    
                Click_through_4_sub_tabs
    
            Click '2nd report tab'
    
                Click_through_12_sub_tabs
    
            Click '3rd report tab'
    
                Click_through_1_sub_tabs
    
            Click '4th report tab'
    
                Click_through_13_sub_tabs

    For this I had to create an illusion of having a dynamic set of operations. Here I had to manually create 13 functions to click through tabs 1 to 13. Then I had to manually discover how many sub tabs for each report tab there were and use that function that matched the number of available sub tabs.

    Hope this helps anyone that wants to do something similar.

    slowmonkey
    @slowmonkey
    @vptes1 Is the documentation (smashtest.io) available for contribution? I'm sure there are some of us that would like to create pull requests to help bolster the documentation.
    slowmonkey
    @slowmonkey
    image.png

    Need help with how to click a button on a page if it's not disabled.

    Currently I have the following and in "Initialise page" I have the following

    * Initialise page {
        let elem = await ${'button[text='click me']:enabled}
        if (elem != null) {
            elem.click();
        }
    }

    The elem.click() does nothing.

    elem is this:

    WebElement {
      driver_: mixin {
        session_: Promise { [Session] },
        executor_: Executor { w3c: true, customCommands_: [Map], log_: [Logger] },
        fileDetector_: null,
        onQuit_: undefined
      },
      id_: Promise { '40238d6e-dd40-441d-840c-f214263a9942' }
    }
    mendhak
    @mendhak

    @vptes1 Is the documentation (smashtest.io) available for contribution? I'm sure there are some of us that would like to create pull requests to help bolster the documentation.

    +1 to this . It would be good to contribute to the documentation with more examples. @vptes1 Maybe you could transfer the pages to a Github repo? Github allows custom domains so smashtest.io can point at your repo and we just do PRs against it.

    ijazdar
    @ijazdar:matrix.org
    [m]
    Hi,
    I'm trying to find the element through this example but facing this error "rror: Element not found in time (2 s): ". Any one please tell me how can i use it in my code for smashtest automation ?
    ijazdar
    @ijazdar:matrix.org
    [m]
    This code is opened in console once i clicks on the drop down, anyone please help me to get element from this example?. Thanks
    slowmonkey
    @slowmonkey
    Hi @ijazdar:matrix.org , can you show your smashtest code please. Is the ConsoleExample_Code.png the html you're trying to find?
    ijazdar
    @ijazdar:matrix.org
    [m]
    slowmonkey (slowmonkey):
    Here's the smashtest code which i'm trying for the shared example
    click '#Testing option[value="mytest"]'
    slowmonkey
    @slowmonkey

    @ijazdar:matrix.org
    Is there a report.html generated? or do you have this test sample in a github repo?
    A good way to find out if it's working for me is.

    1. Use a browser in developer mode and find the element via the css selector you're specifying.
    2. Another thing to check is in the report.html if you've got screenshots on you can check for that step if the page is fully loaded before the step is executed. That way you can see that it's got something to find. If it's timing out that can be a reason why because the page isn't loaded and it's timed out trying to find a non-existing element.

    From what I can see of your images should it not be

    click '#Testing option[value="MT"]'

    ijazdar
    @ijazdar:matrix.org
    [m]

    @slowmonkey:
    Appreciated for your help.

    Please see the below code and UI for the shared query. I'm trying to select the language "Deutsch" from the "Change language" drop but receiving an error "Error: Element not found in time (2 s)". I've also checked there's no any timeout error before my last line against which element isn't found. Could you please check and shared your thoughts to fix this issue.

    Thanks

    Open Chrome

    Navigate to 'https://developer.mozilla.org/en-US/docs/Tools/'
        [
            // Wait 5 secs to load the page
            Wait '10' secs
                Click ['Change language']
                    Click '#language-selector option[value="de"]'
        ]
    ijazdar
    @ijazdar:matrix.org
    [m]

    :point_up: Edit: slowmonkey (slowmonkey):
    Appreciated for your help.

    Please see the below code and UI for the shared query. I'm trying to select the language "Deutsch" from the "Change language" drop but receiving an error "Error: Element not found in time (2 s)". I've also checked there's no any timeout error before my last line against which element isn't found. Could you please check and shared your thoughts to fix this issue.

    Thanks

    Open Chrome

    Navigate to 'https://developer.mozilla.org/en-US/docs/Tools/'
        [
            // Wait 5 secs to load the page
            Wait '5' secs
                Click ['Change language']
                    Click '#language-selector option[value="de"]'
        ]

    :point_up: Edit: slowmonkey (slowmonkey):
    Appreciated for your help.

    Please see the below code and UI for the shared query. I'm trying to select the language "Deutsch" from the "Change language" dropdown but receiving an error "Error: Element not found in time (2 s)". I've also checked there's no any timeout error before my last line against which element isn't found. Could you please check and shared your thoughts to fix this issue.

    Thanks

    Open Chrome

    Navigate to 'https://developer.mozilla.org/en-US/docs/Tools/'
        [
            // Wait 5 secs to load the page
            Wait '5' secs
                Click ['Change language']
                    Click '#language-selector option[value="de"]'
        ]

    :point_up: Edit: slowmonkey (slowmonkey):
    Appreciated for your help.

    Please see the below code and UI for the shared query. I'm trying to select the language "Deutsch" from the "Change language" dropdown but receiving an error "Error: Element not found in time (2 s)". I've also checked there's no any timeout error before my last line against which element isn't found. Could you please check and shared your thoughts to fix this issue.

    Thanks

    Open Chrome
    Navigate to 'https://developer.mozilla.org/en-US/docs/Tools/'
    [
    // Wait 5 secs to load the page
    Wait '5' secs
    Click ['Change language']
    Click '#language-selector option[value="de"]'
    ]
    ```

    :point_up: Edit: slowmonkey (slowmonkey):
    Appreciated for your help.

    Please see the below code and UI for the shared query. I'm trying to select the language "Deutsch" from the "Change language" dropdown but receiving an error "Error: Element not found in time (2 s)". I've also checked there's no any timeout error before my last line against which element isn't found. Could you please check and shared your thoughts to fix this issue.

    Thanks

    Open Chrome
    Navigate to 'https://developer.mozilla.org/en-US/docs/Tools/'
    [
    // Wait 5 secs to load the page
    Wait '5' secs
    Click ['Change language']
    Click '#language-selector option[value="de"]'
    ]

    :point_up: Edit: slowmonkey (slowmonkey):
    Appreciated for your help.

    Please see the below code and UI for the shared query. I'm trying to select the language "Deutsch" from the "Change language" dropdown but receiving an error "Error: Element not found in time (2 s)". I've also checked there's no any timeout error before my last line against which element isn't found. Could you please check and shared your thoughts to fix this issue. Thanks

    Open Chrome
    Navigate to 'https://developer.mozilla.org/en-US/docs/Tools/'
    [
    // Wait 5 secs to load the page
    Wait '5' secs
    Click ['Change language']
    Click '#language-selector option[value="de"]'
    ]

    slowmonkey
    @slowmonkey

    Woah your reply styling has gone crazy.

    I haven't found how to solve this issue but I have found the problem.
    You're using Chrome and the css selector you're using doesn't seem to work on Chrome.
    I tried it with Firefox and that works.
    I know you're following mendhak's tutorial. Mendhak's tutorial is using Firefox which is why that works there.

    I'll try investigate further as to why Chrome is being silly here.
    But that's why it's not working for you.

    Additionally here are some other tips:

    1. You don't need the [ and ] surrounding the Wait and Click steps. The [ and ] should be used as part of the Click Steps
    2. Putting a specific wait for a page to load will make your tests run a lot longer than you want it to. If you've got 100+ tests with a 5s wait your whole test stack will take 500s minimum. I prefer to use Wait Until '#language-selector' is visible. See here https://smashtest.io/ui-testing/verify-steps. This way it waits only as long as the page has not loaded and no longer.

    Hope that helps.

    slowmonkey
    @slowmonkey

    Ok. I've got a solution.

    In this page: https://smashtest.io/ui-testing/browser-steps

    It states you can also select drop down values like so:

    Select element '<option element>' from '<dropdown element>'Select element 'option[value="de"]' from '#language-selector'
    OR
    Select '<value>' from '<dropdown element>': Select 'de' from '#language-selector'

    However only this method seems to work in Chrome: Select 'de' from '#language-selector'

    Here's the code you should have:
    Open Chrome
    
        Navigate to 'https://developer.mozilla.org/en-US/docs/Tools/'
    
            Wait until '#language-selector' is visible
    
                Click ['Change language']
    
                    Select 'de' from '#language-selector'
    also another best practice is to change all the css selector's to props so it reads better. It's stated in a page on smashtest web page somewhere I can't remember.
    Please note that all the different methods for selecting the drop down value listed works in Firefox.
    ijazdar
    @ijazdar:matrix.org
    [m]

    :point_up: Edit: slowmonkey (slowmonkey):
    Appreciated for your help.
    Please see the below code and UI for the shared query. I'm trying to select the language "Deutsch" from the "Change language" dropdown but receiving an error "Error: Element not found in time (2 s)". I've also checked there's no any timeout error before my last line against which element isn't found. Could you please check and shared your thoughts to fix this issue. Thanks

    Open Chrome
    Navigate to 'https://developer.mozilla.org/en-US/docs/Tools/'
    [
    // Wait 5 secs to load the page
    Wait '5' secs
    Click ['Change language']
    Click '#language-selector option[value="de"]'
    ]

    ijazdar
    @ijazdar:matrix.org
    [m]
    @slowmonkey:
    Thank you so much for helping to resole the issue. And for sharing some more learning examples of code. 👍️
    ijazdar
    @ijazdar:matrix.org
    [m]
    slowmonkey (slowmonkey):
    Could you please tell me how can we run multiple .smash files ? and share some reference. Thanks
    slowmonkey
    @slowmonkey

    @ijazdar:matrix.org Can you give me scenarios for what you want to do? I'm not sure what you are asking.

    Are you asking if you can run multiple starting files? So multiple files with Open Chrome?

    As far as I'm aware you can only have one main file. From there you have to call out to other test scenarios or journeys as I like to call it.
    I can't test this for you at the moment as my machine just died yesterday.

    However the way I structure things is something like this.

    I have a main.smash so it's easily identifiable where the starting file is.

    From there the main.smash will call out to other tests.

    # main.smash
    Open Chrome
    
        Method to run smoke tests on this line
    
        Method to run regression tests on this line
    
        Method to run other types of tests on this line

    With this method you can call out to different types of tests. Then you can use the filtering options to call the required tests from the command line if you don't want all of them to work. Smashtest lingo calls this groups. Read it up here and try it out. It doesn't quite work the way you expect. https://smashtest.io/running-tests/selective-test-running. I think the main caveat is it will only read the top most group tag you place and no the ones you place in the underlying branches.

    The main thing about all this is the structuring of the smash test files. It's annoying to have it all in one directory so you will inevitably what it in sub directories but it's annoying to list out every file to load. So you can use the --recursive flag in the command line or add it to your smashtest.json. See https://smashtest.io/running-tests for the documentation. For a list of translated command line options and how to add it to your smashtest.json see this post I wrote: https://slowmonkey.github.io/smashtest-cli-json-mapping

    Hope that helps