On Nov 12, 2012, at 4:32 PM, Caleb James DeLisle <[email protected]>
wrote:
> Hi,
>
> These guidelines are ok assuming the tests are only run once before clearing
> the database as the
> CI server does. There are a couple of tests which generate randomly named
> documents and if you run
> the test suite multiple times without clearing the database, eventually they
> build up and cause
> a registration test to fail.
This is because the registration test is bad and should be fixed.
> I think it's wrong to leave randomly named garbage in the wiki because
> it has an inherent collision risk and increases the overall entropy of the
> tests which we want to avoid.
The rule is that each test should create pages with the space = test class and
page = test name. You can then use a prefix if you need more than 1.
Pages shouldn't be random.
<off topic for this thread>
> What I most disagree about is that this test is inherently broken because it
> doesn't use page objects,
> it's about 10 lines of code and it's worked up until now. IMO page objects
> are a tool, if you don't like
> something because it doesn't use that tool, that's a personal preference.
This test is very bad and doesn't follow any rule that we've set up…
* It uses cryptic xpath in the test itself and those should be put only in
PageObjects
* It's hard to read and maintain and doesn't have a comment to explain what it
does
* It's complex and reuses the same code for different runs, basically it
creates a test framework in the test itself which should be avoided
FTR here's snippet from the Test class:
@Override
protected boolean tryToRegister()
{
registrationPage.clickRegister();
registrationPage.waitUntilElementsAreVisible(
new By[]
{By.xpath("//td[@class='username']/a[@href='/xwiki/bin/view/XWiki/JohnSmith']"),
By.xpath("//dd/span[@class='LV_validation_message
LV_invalid']")
},
false
);
return !getDriver()
.findElements(
By.xpath("//td[@class='username']/a[@href='/xwiki/bin/view/XWiki/JohnSmith']"))
.isEmpty();
}
As I've pointed out on IRC the good strategy for this is to use an existing
Page Object. Here's how it should be written instead IMO:
UsersAdministrationSectionPage page = (UsersAdministrationSectionPage)
registrationPage.clickRegister();
LiveTableElement usersTable = page.getUsersTable();
usersTable.filterColumn("Username", "JohnSmith");
return usersTable.getRowCount() == 1;
But I'd also not create a framework here since that makes the test hard to
read/support.
</off topic for this thread>
> So -0 to tests naming documents using the random number generator.
Yes, random pages should be banned.
Thanks
-Vincent
> Thanks,
> Caleb
>
>
>
> On 11/12/2012 04:02 AM, Vincent Massol wrote:
>>
>> On Nov 12, 2012, at 9:56 AM, Sorin Burjan <[email protected]> wrote:
>>
>>> Hello Vincent,
>>>
>>> I agree with your proposals. I was thinking this is already a rule,
>>> especially 1) and 2)
>>
>> yes me too but since I was having a discussion with Caleb on IRC this
>> morning and he didn't fully agree about it, I'm resending it as an official
>> vote (I don't think it ever made it as a proper vote, more something we were
>> doing "unofficially").
>>
>> Thanks
>> -Vincent
>>
>>> I agree with them.
>>>
>>> Regards,
>>> Sorin B.
>>>
>>>
>>> On Mon, Nov 12, 2012 at 10:50 AM, Vincent Massol <[email protected]> wrote:
>>>
>>>> Hi devs,
>>>>
>>>> I've just added 3 items on
>>>> http://dev.xwiki.org/xwiki/bin/view/Community/Testing#HSelenium2-basedFrameworkand
>>>> I'd like to ensure that we agree about them (if not I'll remove them):
>>>>
>>>> * Tests must not depend on one another. In other words, it should be
>>>> possible to execute tests in any order and running only one test class
>>>> should work fine.
>>>> * Test chat need to change existing configuration (e.g. change the default
>>>> language, set specific rights, etc) must put back the configuration as it
>>>> was
>>>> * Tests are allowed to create new documents and don't need to remove them
>>>> at the end of the test
>>>>
>>>> Here's my +1
>>>>
>>>> Thanks
>>>> -Vincent
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs