Good afternoon again a good day so far excellent, so thank you for coming in this track I know it's always a tough choice with multiple tracks. I always have a tough time which one to go through So really happy to see so many of you over here Hopefully the AC is also not going to get too cold for us to have to run out soon enough So quick introduction about myself. I'm Anand Bhagmar. I am a tester by heart and so on Don't know what that really means, but I've been doing testing, been involved with testing for a long time Currently I'm playing the role of a test practice leader at ThoughtWorks But that's just a fancy way of saying that I'm more involved in testing in all different aspects That said and done Enough about myself my contact information Twitter hashtag is over here Please feel free to reach out to me later today No, I'm in tomorrow as well or after that is in the contact information The slides will be available on Slideshare where I can I'll be putting out a blog post from my blog So you can get a link of that as well the video whenever that is available that will also be linked up with it So you'll get reference of this again Okay Enough about myself. We know how to get in touch with me for follow-up questions discussions around it What is a pattern Okay, now I'm looking for a lot of interaction Otherwise, I know you guys are sleeping or you're really hungry that you're just waiting for the session to get over What is a pattern? Sorry It's repeatable something that is repeatable. Okay, sorry proven solutions. Yes, sorry Someone said something. I don't understand what that means. You see it again and again. Okay, good There are some chairs over here as well if people want to grab it from there Okay, and now pretty spot on right. It's something that is repeatable. You see a specific use case and you say, huh I know this before of sorts. I know how to it's a common well-known thing And I know how to solve that specific problem of sorts or how to approach that's problem. Okay So fair we understand pattern well enough Before we get into the next one, how many developers in the room any developers in the room? Good to developers. Okay, I'm expecting a lot of answers from you guys specially. How many testers QS? Great are all of you also doing automation or only automation both Okay, the other roles are the BS or product owners managers. Is that what the? Okay, excellent. So From a pattern perspective developers which patterns have Do we typically use for which patterns are the more common patterns from a development perspective and we see Gang of four that's not in your pattern Factory pattern. Yes, sorry Observer someone said Visitor singleton. So there are a lot of patterns right from a test automation perspective Have you heard of any patterns or which of the patterns fit into test automation side as well? Sorry Mocking is mocking really a pattern? It's a framework. It's a way you would do automation. It's not really a design pattern in that sense Okay Page object pattern. That's one and we'll be talking a lot about that What are the patterns? Sorry strategy What do you mean by that? Okay, can you explain? Okay, I have not really come across That at least in that name before so maybe I should now look it up But fair and maybe I should talk to you also to understand more. Okay But some of the common patterns that we typically use of course is a page object. That's the first one There's something else called business layer page object pattern which I've started using at least I started calling it a business layer page object some call it a user journey or Low base pattern. There's no standard name to it But we'll talk about that as well and there are a lot of other patterns from a developer perspective the design patterns Some of them are very applicable on the test automation side as well Okay, they could be singleton composition factory builder patterns. These are some of them. Okay, not all of them Now disclaimer, right the patterns that we are talking about or the focus of this session We're talking about test automation One primary aspect of this is related with the top layer of the test pyramid, which is the UI side So it's a UI test automation framework related discussion But some of these discussions some of these things that we talk about are also going to be applicable to other types of automation API level integration unit testing water it might be of course the context differs So what you really use in which context also changes so let's look at Some of the patterns from building a test automation framework perspective what that would be Page object pattern the first one Which is one of the most common and most powerful pattern from an automaker functional UI automation perspective And why is that so if you take a case study of this old Amazon dot com page The page boundaries over here the colors are slightly weird now from the projector, but that's fine So what it really means is if I need to build a test automation framework for testing the home page of Amazon dot com Or code or in whichever that page might be You cannot really think of building automation framework for this one page Entirely why this is very very complex though. It looks like a simple design It is extremely complex in the way it has been built the way the data is coming in the way It is presented to the end users and you can start thinking of it in smaller snippets And those snippets might be just a search it might be the header It might be specific ads now that are placed in the header It might be the featured products that might be there there might be related views or recently viewed items There is in the headers that drop downs each drop down might represents a lot of complex functionality And that list can keep going on right now as complex as the page gets and typically as you start building your automation and you get more You build a more comprehensive automation framework. We need to start breaking down your Representation of the pages into smaller snippets. Why because it is going to be easier for you to manage and interact with as well Okay, so now this is what the different page snippets might represent What is the advantage the page object pattern is really giving you've broken it down into logical chance But what are the real advantage that are coming out? So first thing is you start modeling your pages in code because they are smaller snippets You can easily model specific aspects of that snippet of the page better in code how to interact with that You start simulating the user actions about it. What are the related items from that view that I'm getting? How do I search for a specific thing? So all the user interactions with that snippet of the page you can start Simulating that behavior in terms of doing actions on that snippet or Getting information from the snippet as it is represented It also becomes a one-place change Imagine if that homepage for Amazon was everything was in one page file of sorts. It is such a big file How do I know if something related with search has changed? It's not one team member that is really working on it It's a team of Developers testers working on building that how do I find out where to make that one change in a way that nothing So one with the snippet approach, you know exactly for us search related thing I go to the search page or search in header page For example and make the change over there. Nothing else is really getting impacted by so it's one place change Which is easier to find as well It also reduces the code duplication Imagine again if it's a complex set of interactions in one big file and it's a team of developers testers working on that automation How do I know am I supposed to say search for item or item to search for? Different people would think about it in a different logical way Now if it's a huge file Finding out which is the way it has been represented by someone who has done it first was as someone who needs to update it or reuse it It's going to be a problem. So what would end up happening is? Okay, okay, okay, so if umakanth has written a method search for item And I'm not thinking in the same logical way as umakanth is thinking. I'll go to that page and say a beat a minute I'm not finding this method search for item I am looking for an item to search. Let me create a new method for it Why just because I did not find that implementation in a easy enough way I'm going to start creating new things So if you keep the page small enough logical enough it becomes easy to read through and also understand what is going on in that So reducing the duplication and the snippets of pages is very important because a search page or rather the header Is going to be seen on each and every other page Versus the related views is seen only on the home page So now I can if I have built my header page in a correct fashion I can reuse it in a composition pattern from any other page from a product page or a profile page And I can make reuse easier. So snippets become very important to making it logical okay so if you look at a general architecture as a framework evolves into as The framework evolves as you have get more and more tests automated This is typically what the page object pattern based test framework architecture would look like you'd have a test intent Which has domain functionality the actions verifications and rules. This is what I need to do This is my test intent and how I would go ahead accomplishing that intent and doing the assertions on it But that would really talk to your different page objects page objects would talk to either your Driver which is interacting with the browser or maybe you have a common DSL to say maybe there are some web services Water is required around that right so your framework keeps growing You'd also say about entities and models in terms of what really is my test data How do I manage my test data? How do I interact with my test data or objects in the? product itself a mobile phone has as a model of An object versus a user profile How do I really specify that and interact with that and resources maybe my test data is external How do I load it so you start building your framework to be more and more Feature rich of course it gets more complex, but with a purpose and this is what typically it comes out. Okay? With that in mind, I want to actually show you some examples of Code what this would look like and my this page object pattern sort of makes sense Now remember I am showing you some code the intention is not to really go through the code itself But we understand certain concepts around that so As soon as I can get this moved across So what we have over here is I have this one test Which is saying should be able to add new patient. This is where my intent is and this intent Says that okay have some test data over here I'm saying what is my expected patient information when I create a new patient and How do I go ahead with interacting with the product to create this patient and doing the validation? So now I'm talking to various different pages registration page do something patient chart page do something else registered patient Or get me this information from what has happened in the earlier steps, and then I do the assertion to say yes My registered patient is now the same as what I expect the patient to have been Okay, and what this means is now this is just my test intent It is not telling me how I'm interacting with each specific page that is happening from the specific pages over here I've purposely mixed it up Java Ruby water because I don't know who is familiar with which Language but again the point over here is you're separating the concerns into specific snippets your intent is clear What are you trying to validate? What actions are you trying to do what you're trying to validate and your implementation is going to have the details around that Okay, now this is a very interesting example a Classic case of why you need snippets the home page think about this as your home page class for Amazon And this page is about almost a thousand lines if umakant had written some method and I am Expected to find out if it is existing or not I have to read so many lines of code some people might argue documentation helps No, it doesn't really because it's still again thinking about in a different direction And it's not solving the problem at the root cause itself So what you would end up doing is You would evolve this kind of a page to say Okay, maybe I've got some partials Partials can be very specific things that okay. Maybe this is for browsing the results filter This is for feedback. This is for footer and these are very specific things that are there Which has very little information only related with that snippet and now with this kind of thing I can have functional Partials which are reused across maybe they are related with a specific speech I said However, you really want to organize it and only the team members know what is the best way to organize? They are working with the product. They know those details Okay And you would have various such other utilities So why did we really talk about this Why did we have to see this example the two examples that we show about a huge class file and then the partial snippets This is an evolution that happens in a test automation framework. You're using a pattern you started using it But then you eventually realize maybe it is solving the problem only up to a certain level And there is something missing out of this what next needs to happen You want to identify the root cause and fix that rules cause to identify the root cause Let's look at some of the limitations what the page object pattern comes across The first thing is the test intent starts getting polluted Think about a scenario where I have a variant of a similar functionality Maybe it could be if I have to book a flight ticket. I could book it using I'm not a registered user on that particular website or that particular airline, right? So I want to book a flight ticket as an unregistered user. It is possible to do that The second variant is I want to book a flight ticket as a registered user What that is going to mean in terms of business functionality, of course, there is an impact right as a registered user I'll see it in my profile my future flights water might be there but with this variant of these tests Most of the steps maybe 90 95% of the actions related to booking a flight are going to be the same There's going to be some variation related with registered versus unregistered user Now to implement this test what you would do in your test intent You have implemented one test copy paste into another one start making changes and now I've got two tests automated excellent It was so fast. But now what has happened is if my user flow changes how I'm booking a ticket I have to go and change in two different places Even if 10 lines out of the 20 lines are common across both the tests If they're in the same file you could create a private method and reuse that in certain ways What if it has to be shared across different test classes, for example And it is very much possible The requirement may be such. So how do you start doing that? So the test intent pollution becomes a one big major problem as your test framework grows purely with a page object pattern Because of this duplication of the intent the implementation also starts getting duplicated in various ways How do you start managing that Also now to assist in better reuse the intent has started becoming imperative In the example that I showed in the registration of a new patient I'm talking about specific actions over there right Once the business rule really apparent out of it why we are trying to register a patient what type of patient are we trying to register To make it reusable to keep it simple we start thinking about imperative actions based on the UI flow of the product Not necessarily what the business case really is what is the business value you're trying to derive out of automating that intent And page object pattern as the framework specially grows it starts making it more and more imperative in various ways And also the maintenance challenges that we spoke about how do you make reuse if something changes you have to go across and change in so many different tests around that Because of the maintenance challenges scaling also becomes a problem as I keep on adding more and more features how do I do that really well With me so far on the challenges of page object Do we relate to these challenges Yes no So that's where I started thinking of okay there's something missing and maybe this was already a solved problem but it's not really a well publicized problem Our solution for that matter I said no this duplication does not make sense I believe in keeping my report dry Keeping it only fit for purpose of sorts no reuse or duplication so how can I manage that plus at the same time I am a very strong believer of the value the test automation pyramid brings to the teams Which means I have to keep my UI focus test functional focus test very precise very crisp and clean and it has to be really high value for me to say to justify the cost of doing it at a UI level So from that perspective what is most important? I want to automate the business value which is of critical essence to the product it has to keep working every time from an end user perspective So for that I started thinking about this business layer page object pattern and all it does is it abstracts the existing earlier architecture into one layer more Now we have a test intent but the test intent is not really going to be about what functionality I want to automate how do I interact with the pages My intent is going to be a pure business intent if I have to book a flight ticket taking that example okay what do I need to do I need to search I need to select based on certain criteria from the search results based on that selection I have to enter passenger information make the payment And ensure my PNR is my ticket is booked correctly PNR has been generated for these are my business operations do I really care which page do I need to go to search from where do I select the search results That is not of any value to the business the business value is search search results booking that is the business value that is what I will provide in my test intent The business layer is actually saying okay how do I want to search to search I need to go to maybe the home page or on any page that I am I have a search functionality over there I will use that The business layer knows how to implement that So the test intent is very crisp and clean business layer business operations the business layer is going to know is it a complex business functionality that I need to talk to other smaller business operations Which are need to be done maybe login is one aspect of that it's a business operation in a way right authenticate a user before proceeding that's a business operation So business layer might call other business layer functionality or it could call other pages entities the resources as earlier to get that specific business operation implemented Also the other difference is now the test intent does not really have actions or verifications or assertions of sorts But test doesn't care if my PNR has been the test should fail if the PNR is not generated The business operation itself should say if I'm booking and I expect this to be a valid booking request PNR should be generated the business layer is going to do that assertion and send it back The value this brings to me is the test intent again has remained clear it's about business operations any time when the test execution is going on any part of it fails whether it's at business layer or page layer The test is going to fail anyway with proper logging you and error messages you should be able to see the exact root cause of white fail but when anyone looks at the test intent you know why that test is important what business value you are getting out of Okay, so let's know by the way this architecture about actions verifications rules being in a business layer that is purely my thought I strongly feel it makes sense to put assertions here and not in the test intent I'm open for discussion around why that might not be the right thing but this has worked really well for me okay so let's look at another quick example for this Now this example is a cucumber JVM example using a BDD tool to automate a specific functionality for simplicity it is a very trivial example of sorts We could say in fact this might be a better one okay given I'm on the Google search page when I search for certain content I should see a list of related posts this is a very imperative scenario I know that this is not really a business driven scenario But when I have this as a starting point for my framework for example I specified what my intent is what this relates to in the step file again cucumber terminology it's okay if you don't really if you have not used it before But what it means is now my test intent is calling business operations only over here I'm just saying search for certain criteria I'm not instantiating a search page over here to say okay search for this in this particular page My business operation is saying search for this criteria that is all I'm saying and in my implementation in the implementation of the search page I will say okay instantiate a new search page and this is how you would search for We have created an abstraction layer in a trivial example it just seems like a lot of overhead you are unnecessarily calling methods which is not really providing any value But when you relate this with a complex example as your product is really scaling as a framework is really scaling up having a lot of tests you will start seeing aspects of reusability over here which is not possible if you keep it in the test intent itself Okay questions what's The abstraction is the step definition Okay, let me correlate this with another example non cucumber example or to start off if it's a J unit or test NG based test you have a test annotation and that's where your intent is going to be In the example that I showed earlier for this one we are calling pages directly in my test intent The difference is going to be over here now I'm going to call business layer operations which might be registration is a business operation and that would have a register patient or register different type of patient or whatever that really means You're not talking to pages directly from your intent you're talking to business operations and the business operations is going to talk to whichever other business operations or orchestrate the different interactions with various types of pages to get it In that business operation you would also have validations and assertions for Yes, so page objects in inheritance fashion to handle business layer it's really a different problem you're trying to solve in my opinion I would Need to use inheritance or composition for that matter of pages to build up what seems like my home page or my registration page whatever that is I would use that but is that really my business operation not really And that's a fair point still I don't necessarily agree with it for the simple reason why what really is a page object I know we are digressing I'll try to keep it short and we can have a follow up on this Exactly right so the page object what is the intent of a page object how do I interact with certain aspects of the page it represents How do I get information how do I set information The page object doesn't know what is right or wrong that is what the business rule is And that's the reason why I like to keep that separate because my business rule might remain the same but the way I interact with the page is different A drop down has changed to a radio button or whatever it might be the page doesn't care why the page just says how And why another classic example login right a login page would have username password and a submit button Now the method on a login page to log in with these two parameters What is expected out of the login page the next page should be maybe the home page or the profile page what are the business logic is Now if I want to test an invalid login scenario there's a page object need to care on the next pages not this I'm supposed to remain on the same page And so is authentication really a page though and that's where it is getting complicated Yes exactly that abstraction is what I'm calling as a business layer The pages what we talk about is directly what you can relate with in the UI or on the device That's the mapping Possibly, possibly Okay, so this is what the business layer page object pattern starts helping towards solving a specific problem Now if you're starting off on a new project, yeah Sure Yeah So to keep it short yes and no depending on what is the intent of your test framework If you're talking through end to end including external dependencies then yes of course If you're talking about some stage where my external dependencies have been mocked out because I don't really control that I don't have a test environment for that for what a reason then it's a different thing right So the intent of the test really comes out or it comes out today And there are ways around that but again the point is depending on how your environment is set up What type of test data you have or not you could be able to do the whole mind in that sense is payment successful is being generated Okay So what are the advantages we spoke about some of these we are now thinking about what is important to business to your customers Because business sort of represent what the customers want right that's how they're prioritizing you're validating that aspect You're ensuring your test pyramid remains sane and that's a very Mighty comment to make because you're still focused only on the top layer But by reducing the top layer of the pyramid you're forcing your other automation Test cases scenarios to be pushed down in the layer to say this is important has to be done Look at a JavaScript level or whatever else is required around that but your UI layer you're trying to keep it small The abstraction layers help to separate the concerns if my business logic is changing I'm going to change the business layer if my page logic is changing I'm changing there In some cases I need to make those changes in together for that matter The changes remain isolated now you've got a very good abstraction layer in your framework And hence maintaining and scaling of your framework becomes relatively easier Cannot say it is easy for sure but it becomes relatively easier you now know what has changed And you can go ahead and make those changes according So that's to accomplish the page object or business layer And various aspects related with your test framework you might have to use other patterns Anywhere we spoke about singleton composition various other patterns Which bring these things together which make it feasible Let's look at test data now which is something unfortunately not thought about as much Not focused upon as much Creates a lot of problems in depending on the type of product you're interacting with But before we do that why do we need to think differently about test data Has anyone had fun working with any product or create any type of test data? That's one so I create a user can I create that user again for example Can I repeat with the same set of data? What else? That's a very That I'm not even touching upon right now but you're very right How do you really ensure that is it just the stream is coming through correctly or not Or actually validating what is coming inside the stream So variants of data which is going to cover different aspects of how the product would behave Absolutely, absolutely So what are the criteria we think about so these are some of the criteria which we have right Repeatability and behavior aspects And why does it really become a challenge though Because data is complex If I just have to think about I want to implement an automation to buy a particular product A cell phone from Amazon Phone has got very specific set of features Am I going to buy any phone? Do I want to buy a specific phone? Does it have to be in stock or out of stock? Do I want to search for different types of products and select one from that On what basis do I select one from that So depending on your intent, excuse me Depending on your intent of what the test needs to do The data can become really complex Think about a banking transaction right I want to create a new customer For a particular type of account Now the customer has got a lot of complex information It's not just a personal information name Salutation everything Also address becomes a part of it Is it your permanent address, current address What type of address is it What is your official address, business address for example In some cases maybe you need that Maybe it also needs a dependent information And dependents could again have the same type of Deep requirements as well For whatever reason So how do you really create this type of data From your testing perspective to say I want to create this type of customer with these details And ensure it is created correctly So it can be really simple I want to register just giving my email id Or I want to create a customer having this complex information So how you would specify this data Is very very critical Yes, most importantly It has to mimic real data I cannot just create this data on the fly Thinking about anything If it is not realistic what is going to happen We are going to get surprises in production Because that's where the real type of data would come So that has to be there It needs to be unique Is it two customers with the same details For a bank? No There has to be certain criteria which is separating it Data hence can be nested also We spoke about that customer example Though specified as static it needs to be dynamic Now why is this important? Same case, repeatability If I can create only one Anand Bagmar As a customer in the bank How can I repeat this in an automated fashion To ensure I can create this customer every time So do I specify Anand Bagmar as my test data And ensure I delete this customer And next time it comes up again it is possible But in banking systems can you really delete customer information? No, they are archived or they are marked as deleted Not a customer whatever They don't really delete it for some time Maybe for regulatory reasons It becomes more complex So we have to think of it as I specify it as static But it needs to convert it into dynamic As we proceed Maybe my framework will say Taking the first name, last name I am going to add some unique prefix suffix to it When I am actually executing the test So I am specifying it as static But in the implementation of when the test is running I am going to convert it into dynamic and then proceed That might be a way to prevent cleanup Which might not even be in your control Or it may not be possible as well You have to think about data can be shared and reused If I have specified some test data in my test Someone else might say Okay, I already have a customer of this type Let me reuse that same data and do something else with it Is it going to pose any problems or not? There are a lot of things to be considered for this Now, given all these criteria In which different ways have you specified Test data in your test framework So if I have to say Login details, use a name password I need to login using Anand Bagmar And password ABC Where and how will you specify this data in your framework? Maybe in an YAML file Do I need a YAML file for just providing use and in password? Questions to ask Absolutely, I am not disagreeing I am asking the question Is that the right approach or not Based on the context That is one definite way Typically when you start writing a test The first thing you would do is In my test implementation itself I will say this is login, hard code the values Proceed, am I able to login or not? Next is what Maybe I need to try different variants Maybe I have specified a separate file With different combinations, whatever You start evolving into that So in test implementation Or in the test specification Or intent itself So these two are different things Implementation is not at the intent level In the page object itself I have hard coded it From the test intent I am specifying it as parameters to my page object To say login using these details The third thing is What you said right now Of sorts is it is either in code Maybe in separate Hash maps, lists, whatever it might be As separate resource files Or it could be in separate external files itself As a YAML file So a lot of options when you can do this Now Separate files itself has got a lot of combinations A lot of options that you might have Typically you start thinking of If it is a windows based Organization Excel is the first thing that comes to mind Even though there might be simpler ways to do it But Excel is one CSV files are a variant of Excel in a certain way Of course it becomes platform agnostic The minute to turn it to a CSV You can have property files You can have XML files Hopefully no one uses XML anymore Or there are better alternatives YAML is there, database is there JSON is there There are so many different options Which one would you really choose And why When you start building a test framework You need to think about the overall approach What you need to have for your framework What is the overall intent Where do you see the framework really growing How many tests, how many people potentially working on it To think about the strategy What to use What test data It is very important You also have to think about how to make it reusable and manageable Do I really need to provide 100 fields to create a customer Or can I do something more intelligent And this is where Experiences having Certain foresight Which might be wrong, which is fine But at least you are trying to think about what the future might be For your product and framework But based on that understanding what is the right strategy to use To get on that path And based on that, these are just some ways You can do that implementation Where your data can be there But is this the only way Is this the right way The answer is no There are many more variants you can create Based on these information that you have collected Now how to really proceed And let me show you a quick example on that Yeah So I am going to go back to Our cucumber example As soon as I can find it on I can locate the mouse So what I have is This cucumber file I want to create A new individual customer I am referring to a line number 56789 for example I want to create A new individual customer Think about a customer as a complex data That is required to create a new customer In the banking system What I am saying over here is I know my entity type is A new customer What I need to provide as input to this particular Business implementation I need to provide it contact information And I need to provide it some address What I have done in this implementation Is I am using a data table Which goes in as an input to the step But over here I am saying entity type Is contact info And which data section I want to use I want to use individual one Which address I want to use I want to use BNERES3 What I have done is I have created entities In these entities The entity type matches The name of the JSON file over here So my contact info Is a JSON object I am saying from this entity file Use this JSON object and create Use that information To create the personal information For it. The address Likewise Use it from here Why is this important? Because I don't want to Pollute my intent I don't care what the name really is What the address really is As long as it is fitting a certain demographic Certain criteria that is sufficient for me to know From an intent perspective How to create that customer Then the next aspect I now need to Make certain aspects dynamic Why? Because I cannot create the same customer Every time. So what I have done is I added another column in this data table And I am adding this aspect over here Randomize Again a cucumber specific example how to override it But I am saying randomized value is going to be Based on whatever the scenario outline Has it. So this scenario Outline is going to run Twice once with this data The other time with this data So in the first case, randomized value Is true. In the second case When it runs again, randomized value is false But now what I do is In my implementation, I also use This value and say, okay If I have to randomize And it is of type contact info Which feels out of contact Input via randomized. That is my own Framework intelligence that I am building To mimic a real system, a real world Scenario So you are now using external Files specifying relevant Data in your test itself And telling it how to proceed With it. You are also building intelligence In your framework to say how are you Dynamic and reusable at the same time Okay I am almost I am almost done. We still have Two minutes. But I will be done In that. So Criteria is it has to be easy to specify Easy to read and consume Ability to override as Required and it has to be usable Don't make it so complex that no one can use it You need a special set of people to manage test data Okay Think about consistent ways to Represent it. Think about the data as Business entity. So you don't have to Map a customer what it means in your Mind or the testers mind And what it represents in your product If it is similar, it makes A great Provides a great piece. Override as appropriate So you specify some data And override certain values out of that as well And maybe create DSLs to give it More meaningful information how to Go with that. Okay Certain things which have really helped me is Thinking about how to build certain utilities On your test object itself data Objects to compare test data in certain Ways or copy it replicated That helps a lot speeds up Implementation in various ways Locators similar for UI you need to interact with certain Elements you can think about it in the same Way as test data is just a differences It's not test data. It's used in implementation That's the only difference Okay Last quick bits. So what are the Advantages of patterns? We understand that well As developers, testers, we have used Page objects and other patterns so we understand This aspect well But what are the advantages of Patterns in test automation? It helps in the single ownership The pattern knows exactly What is to be done. It's a known problem How to solve it. It's a single point of change If I'm using a page object And I need to make a change I go to one place and make that change It will work fine If I'm using an effort, eventually To start building it based on the patterns There is effort required. There is complexity there But once you set it up, it is going To speed up a lot of things later on And it also helps in implementation Maintaining, debugging and scaling Of the framework as it goes on But the most important, patterns Will help move your test automation code To as close to production quality As possible. Patterns Doesn't ensure it's of production quality But it's one step in that direction To make it better Which pattern is best to use? It really depends on the context What is the product you're doing What is the intent of the test And what will help you get to that level Really have to rush through the last few minutes She's already standing up Because she has to kick me out of here But as I said My contact information is here We have lunchtime right now I'm happy to continue discussions during lunch as well Thank you for this time From value out of this Thank you


Welcome to episode eight of the Private Property Podcast. I'm your host, Zaman Dunwoa Komalo. I hope you've all been staying at home and staying safe during this lockdown. We are on day 25 of the national lockdown. Now, this evening, if you are a prospective new home buyer and perhaps you're looking to find out what are some of the things that you need to be looking out for, then this episode is for you. We'll be talking about some of the most common mistakes that home buyers make and how you can avoid them. And joining me this evening is Grant Smear, who's the director at Epic South Africa. Good evening, Grant. Thank you so much for joining me this evening. Good evening. Thanks for having me. Now, a lot of people are probably considering going into home ownership. Perhaps they are renting or they're staying at home. But as we all know, there are probably some mistakes that a lot of us who buy our homes for the first time make. I know I made a few mistakes early on in my journey. I'd like us to have a snapshot of some of the most common mistakes that you've seen out there on the market and help our viewers at home navigate how they can best resolve some of them or avoid some of them. What would you say are some of the most common mistakes that you've seen, Grant? So I think the most common mistake for a first-time buyer is assuming that your first home is a home that you need to sort of invest yourself in emotionally and it's going to be a property for the long term. I think that people need to take a much better view of your first-time home as your first property investment and look at it from that point of view that you might live in for a period of time that could be your first entry to all the starting point for your property portfolio. So to start looking at it as a property investment rather than a home for the long term. And how do you look at it differently?  Maybe I don't want to make an emotional decision. And so many of us make emotional decisions when it comes to property because it can be a bit emotional. But how do you almost differentiate or look at it from a different perspective and not just go in with your emotions? Yes, there's two things. The first thing is to take your time. Don't ration something because emotion gets you to make the wrong decision sort of clouds or give you roast into glasses when you're looking at something. So falling in love with property and getting emotional about it. If you take your time, you can really take a step back, look at a property, assess the property correctly. Even when I say run the numbers, you want to look at the potential rental opportunity that's created by the property. What sort of return are you going to get?  Part two to that is also look at the neighborhood or the area because you want to make sure that that area is in the stage of the property cycle that is going to be positive rather than being negative. And when I say that, I mean that there's going to be too much supply in the market. So when you do try and rent out your market, I'll get the best rent. Now, you know, Grant, I know one of the other mistakes that we tend to make is not shopping around for the best interest rates. If you could tell us a little bit about that one. Yeah, so I mean, you know, traditionally, what people do is they go directly to their own bank and they just assume their own bank is going to give them the best interest rate and then they accept whatever's offered to them. So my suggestion is there's a really good mortgage originator out there that you can approach. They will approach all the banks for you and find really the best deal on the market at the moment for your credit profile. So it's very specific to you personally, your credit profile, how you've looked after your accounts, how you've looked after your credit profile and the banks will are at different stages of funding. So for example, your bank might be in a space where they don't have as much funding available. If the mortgage originator goes to another bank, they may be able to offer much better interest rates just because of where they are in their funding cycle. So it's important that you do shop around. My suggestion is just go to one of the mortgage originators that offer you very good ones out there that again, that approach all the banks for you at the same time. I mean, for our viewers at home, you'd remember, we actually covered this on episode seven of the Private Property Podcast, the importance of shopping around and using a bond originator to help you shop around and the different ways that they essentially help you by going to the different banks and even negotiating a better interest rate for you. So if you haven't watched it yet, do go back to episode seven and haven't listened to some of the tips that we've heard from our bond originator. We had a guest from Beta Bond who was helping us best navigate how you can make the right decisions when you use the bond originator. And of course, if you have any questions for us this evening, you can send them through right here on Facebook and we'll be sure to address them. So if you've already made that mistake or you're already thinking, maybe this might be a mistake, send it through and we can help you work around it and perhaps find a solution for you. Now, of course another mistake grant that people make is buying more than what they can afford. And we all know that of course, when you get qualified or the maximum amount that the bank will essentially extend to is based on your gross pay. So it's typically 30% and it's your gross pay but sometimes people don't actually sit down and do a balance sheet and actually get a sense of what can they really afford. So even if you qualify for a million RANDs, can you actually afford to service that million RAND bond? Can you take us through the importance of almost psychologically understanding the difference between what you can be pre-qualified for and how even though you could be pre-qualified for that amount, it's actually quite possible that you might not be able to afford it. Yeah, so I think again, we've got to tell people to take their time when they're going into the process of buying a home and really sit down and look at their numbers. If the bank comes back and says you're going to afford a million RAND, that's fantastic but you need to know what that's actual cost is going to be on the monthly basis. A million RAND bond at the moment is probably going to cost you just short of $10,000 in a month. And even if you're earning $30,000 in a month gross, you need to look at your other expenses because those expenses might be eating away at your ability to afford that $10,000. Adding to that, you've also got to account for other costs of ownership. There's maintenance costs, there's rates and taxes, there's levies, if you're in a sectional title or homeowner's association, which you don't account for when you're renting. So those costs don't exist when you're renting and when you move into an ownership space, the cost of ownership adds up quite quickly. So the average levy out there is 1,200, 300 RAND a month. So immediately that's adding 13% to a 10,000 RAND bond. So again, you've got to assess all the expenses not just the bond itself to understand the cost of ownership. And I actually want us to talk a little bit about that because I had it as one of the most common mistakes that first-come buyers made, that idea of not factoring in the true cost of home ownership. So you often think it's just going to be a bond payment and that's the only thing that you essentially have to service, but there are so many other added costs that you typically wouldn't think about or wouldn't know of when you're renting. And I've already mentioned some of them. So levies are one. And so even when you're shopping and suppose you're shopping in a sectional title, asking how much are levies?  And if your bond payment is 6,000, then that's quite a significant amount relative to your bond payment, of course. Now what are some of those costs of home ownership that people probably wouldn't think about when they're renting? Because of course, that's a different cost altogether, different consideration, versus when you finally actually buy your home and have to start as not just servicing the home load, but also keeping up with the upkeep of the actual place. Yes, I mean, immediately, if you're looking at a freestanding home, you're going to talk about mostly maintenance. When you're sexual type of scheme, a lot of the external maintenance is in communal areas and it's covered by the body corporate, which comes out of your levies. So let's talk about a freestanding home, you're talking about maintenance on the outside and then on the inside, if you're owning a property. Rates and taxes from the municipality. So your costs there, your refuse, water, which may or may not be included in your rental if you're renting a section title.  And there's two parts to the levies as well. There's the ongoing levy, which is the budget amount on a monthly basis according to the annual budget determined by the body corporate at the AGM. And the second part is the potential of a special levy, which is to pay for painting of a complex or any major works that a complex needs or even topping up of the maintenance reserve, which due to the sexual type of management schemals, you need to keep a reserve in place and your complex might not have the money so you need to top it up. So you also might have a special levy. So there's a few things. When you move into sexual type of particularly, you need to dig into the finances a lot, speak to the owners and take a look at the minister of the AGM because those will be indicators of the potential of a special levy can be up. And special levies can cost fortune. If you paint a complex in a relatively large complex, I mean, painting costs two, three, four million round. So you've got to share in that cost to one of the owners. And I think it's probably one of those things that you don't think about. I recently had to get a quote for a paint job for actually two different paint quotes. One was for four complex, which cost an arm and a leg. I mean, it was in the hundreds of thousands. And the company was thoroughly shocked about just how expensive painting, and it's not even a large complex, but how expensive painting can be. And then another paint job was for one of the properties. And even that was actually quite pricey. So oftentimes when you're renting, you probably don't think about that. It might just be perhaps one wall you want to change the color of, or may, and that's if you landlord of course allows you to. But the moment you're an owner, you have to think of every little thing. And of course, one of the other costs that we actually didn't mention that branch is insurance. So if you're oftentimes when you're in a stand alone, you might pay for additional insurance because it won't be covered by the body corporate or the amount that you pay to the body corporate. So that's an additional cost that somebody probably didn't actually think about as they were thinking about the true cost of home ownership. And of course, then there's the one big one. And I'm going to confess, I've actually made this mistake and it's not having the property inspected before you actually buy the property. If you can take us through that one. Yeah, so generally you go into your property and there's an expectation that there's the full disclosure from Sella and there's a requirement that the Sella does provide a full disclosure. However, that requirement only relates to what they could have reason to have expected to have known in relation to property. So for example, if you're buying a property that was rented out for many years, that owner could never know all the issues or underlying problems that are in that property. So you do want to consider having a professional property inspector come in and look at the property and assess the structure, the paintwork, sort of everything, the electrics, everything in the property to ensure that you don't have a hidden costs coming out when you do take over the property. The issue once it further is that a lot of people rely on the estate agent to know or have known or be a professional in having known that there are issues. And again, that's not what the estate agents are trained for, it's not their skill set or their expertise. So you don't expect or can't expect an estate agent to point out all the issues. So it really is advisable and it's not a big cost considering the average property in South Africa when people are buying is between 700,000 to a million rents. So if you're looking at that sort of price point, it's gonna cost you $3,000 to $4,000 to get a property inspector in to give you a full assessment of a property and potentially give you a report that's gonna be enabled you to negotiate a cheaper price on the property. It's certainly worth that $4,000 to your $4,000 upfront investment to do so. And one of the things I think, like I mentioned, I made this mistake and I was a newbie. So I was a newbie buyer. Didn't even know about property inspection to be honest. And when I bought my initial sort of two properties, both of them didn't, they weren't inspected. I think in both OTPs, there were a few declarations of what the owner knew to have been faulty. And some of it I had actually seen when I was inspecting the place myself. But of course, there are things that you do not see. Sometimes there might be, whether it's a water leak that you can't visibly see or whatever issue there was. I mean, with myself were a few issues which luckily have not been resolved and didn't cost me an arm and a leg. But I think had I been able to get, firstly, had I been able to know about an inspection and know what inspectors do, I would have probably opted for it and would have most likely been able to negotiate a better rate for those particular properties. And both of them are already very well priced that bullishly negotiated the price down. But I reckon had I put in that extra money gotten in an inspector, I would have probably been able to navigate that slightly better. And of course then grant, there's also the issue of whether or not to use an estate agent. I mean, oftentimes some sellers might want to sell themselves. And if you're a prospective home buyer and you're dealing with directly with the seller, perhaps you might be feeling a bit wary about it or not sure whether this person is legit, especially as a first time, you wouldn't know how to best assess whether the process that's actually unfolding is what is supposed to unfold, especially if it's a private sale. How can people best solve for that? Or know that actually this seller is still going according to how a house is meant to be sold? Yeah. So I mean, firstly, estate agents do need to be registered. So my first piece of advice is use a registered estate agent to somebody that can show that you there for doing this fund certificate. Every single estate agency needs to be able to show firms to put firstly. And then the estate agent themselves need to have a for doing this fund certificate. So that's sort of the first criteria. It's not, it doesn't give you definitive answer, but at least they are complying with the act in the first instance. Part two then is a gut fuel comes into the lot. So if you're feeling under pressure and unnecessary under pressure to buy or make an offer, you know, there's no, the buying process in South Africa is not a quick process. It takes you three months to transfer property. If the estate agent put you under unnecessary pressure, I would then again, take a step back and take some time, maybe don't take a call or, or get some advice from a convening attorney and then go from there again and make a decision once you've got some breathing room. So don't be put under pressure by anybody. There's no reason to rush into and buy and just jump at a property. There are millions of properties out there. The one that gets away is not going to be the one that's going to end the world for you. And I mentioned convening attorneys, all the relationship with a very good convening attorney because they ultimately are responsible for the entire transfer process. And they can give you good advice whether the office purchase that you're looking at is very good or good enough. They perhaps provide you with an office purchase that you can make use of. And they can also give you advice on the prices even if they're not involved in the initial part of the sale. And then granted, there's also the issue or the state that, you know, a lot of first home buyers make is not negotiating. Yeah, yeah. I mean, you know, funny, I've got a business partner who says not what you deserve is what you negotiate. And I think that's the best way to put it is... I love that. It's not what you deserve is what you negotiate, OK? Yeah, and so, yeah, it's my pleasure, Brad. So it's very important that you do negotiate and everything's negotiable. You know, you need to understand again, you're not under pressure to buy and all the more that you assume that you're under pressure to buy, the higher the price is going to go, the less that you're chasing the deal, the lower you can push the property, the property price. We're also in a buyer's market. So this is also another realization of where we are in, not even because of lockdown, but coming into lockdown, we were in a buyer's market for a long period of time. We're going into a prolonged buyer's market now. So anybody that's looking to buy, you're going into probably possibly the best market to buy a property in the last 10 years because there's finance available from the bank. They're very keen to lend and have been for a long, long, long time. There's going to be lots of stock on the market. So lots of properties coming on the market for various reasons. People having to move to stress properties from a financial perspective. And people are very uncertain in terms of what they need to do for the long term. So there are going to be a few buyers out there looking to buy. So lots of stock, a few buyers and good lending criteria means that it's a really, really good time to start considering buying.  Everything's negotiable. Property prices are going to decline slightly over the next medium term. So take advantage of that, of almost the discount sale. Grant, so I mean, I'm sure that people watching at home were thinking, OK, I'd like to be able to negotiate. What would be your negotiating tips, right? Because I don't think that's something that comes naturally. I'm quite bullish in my negotiations. And typically, I'd kind of have my different facts. I would have been watching that particular property for an extended period of time. Sometimes I even know that it's been on the market for 10, 12 months, so they're struggling to sell it. So I'd come with all these things, right? But not everybody knows how to negotiate, especially if you're going to be buying the first home. I mean, I was saying in one of the other episodes that often a lot of new home buyers don't know that the purchase price that you see advertised, whether you go on to privateproperty.ca.za and you click on the property that you like, and it's going for $800,000. Not a lot of people know that you can actually negotiate that down. Oftentimes, people think it's like walking into a mall and a pair of jeans are $200,000. There's no negotiating it down. That's the price that you pay. And we're used to that kind of mentality that the price that you see is a price that we pay. So the idea of having to negotiate is fundamentally harder for us. So if you had to give us some negotiation tips, so negotiation 101, what would be some of your top tips for a new home buyer when they're negotiating for their new home? Yeah, so first thing you said there is that you watch property, you know your area. So information is always the most important part of any negotiation because you can counter any arguments with real factual information. So understanding the property trends in the area, how the property's been in the market, the distress or motivation behind the sale, why they're selling, having a pre-approved mortgage in place so that you know you can move quickly. So those are a few of the things you can do. When you're getting down to sitting across the table from somebody, usually just understanding the situation more deeply, understanding why they need to move, what their situation is, why they're selling, and how you can align your offer, what their needs are is vitally important. So for example, in a motivated situation, somebody might need funding to pay for moving costs or something else, and you can build that into your offer to perhaps assist them so they can afford to actually move their physical furniture out of the property. But in terms of offering that help, you then negotiate more on the price. So you're right, the reality is the price that's sitting on private property when you go and find the property on the website is it's a, make me an offer of, but doesn't say the offer must be 800,000 or a million man. It's sort of make, I would like 800,000, what are you willing to offer me? The other thing is make negotiation again. People are too scared to or too shy to negotiate. And I mean, for many years, I was very, very shy to negotiate on anything. And my wife is of Portuguese background and the Portuguese are very good at negotiating.  So don't take it too seriously. It is ultimately a game. Don't get too emotionally attached to the property and have all the information at hand when you're on negotiating and then understand the other person's situation very well and you'll be on a very good wicked to negotiate well. And I think another tip that I'd probably share with our viewers at home is, you know, when you ask things like what's the reason for selling? Some, a lot of estate agents tend to give up quite a lot in answering that question. So sometimes kind of hold back in sharing your own reason for wanting a place and that kind of stuff and let the estate agent talk because they let away so much. So some of them will say, this is actually a very desperate seller and they've been pushing down the price but they haven't been getting the right price. So you already know that you probably have more room to push down that price a bit further. Sometimes they'll say that they're in the middle of a very nasty divorce so they actually need this transaction to go on very quickly or whatever the situation is. So you're often able to get a bit of insight about the particular property when you have that conversation with your estate agent. So it also just goes to building the relationships with the various estate agents that you're going to be talking to and who are going to be helping you find your next home. Now, Grant, I'm going to go through some of the comments and questions from our viewers at home. Remember, if you've got any questions for Grant and myself here on the Private Property Podcast, you can ask them down here below and we'll be sure to address them. We've got a comment here from Michael from NIGAR who's actually commenting on the issue of negotiating and he says, if a property is in high demand, there's a lot of negotiation, there isn't a lot of negotiation that's possible. If it's fair value, the seller will accept, which is fair, I think in some instances, the sellers and even the estate agent, they know that they've priced it just well and that's also why as a seller, it's important to listen to the insight from your estate agent when they tell you, this is kind of that sweet spot and you'll be able to get that quick sale if you price it at that level and then possibly won't be able to negotiate any further. Question from Preeti Makulaba is, how long do you estimate the buyer's market to last? So how long is the piece of string really? The buyer's market coming into lockdown was probably going on for 18 months. There was pressure on the market and it has been pressured for a period of time. There was a lot of predictions that middle of last year that it will continue for 18 months. So we were talking at the end of 2020, it was then going to look to turn. Nobody could have predicted we were sitting today, all in our homes and doing these type of calls. But I do think that we're looking at a three to five year buyer's market, maybe not as aggressive as initial two to three years, but I do think we're sitting for a long term effect. What it really relies on is how long does lockdown last for and how does that affect our economy? We've seen a lot of commentary on that, but nobody, no matter what commentary you see out there, no one really knows what the ultimate effect on our economy is gonna be and therefore how that's gonna affect the property market. Which is very true. And another question coming in, Grant, is from Yasmat Soni, who's asking, are bank sales negotiable? So bank sales are negotiable. So generally, it depends which stage they're sitting at. If the homeowner has approached the bank and said, look, I'm in financial trouble at the moment, please assist, then they go into the bank assist program. That is negotiable because it's negotiable directly with the owner. You know, once you get into a repossessed position where the banks own the property, then you're looking at a general auction. So and the banks will also negotiate on those prices because they generally don't want to sit to that stock on their books. They don't own property, they don't want the properties there. So they're starting to negotiable. Again, they look at their costing and their profit and loss on those properties. So bank sales are negotiable. You just need to build those relationships with the relative banks or the asset agents who deal with bank stock. And similar to that question, Grant, but this one is from Setu Shabalala. She's asking, can you negotiate with developers and should you try? And that's a good one because I mean, we've seen coming up and their prospectors will have a set price. Is that a price that's actually negotiable for us? Yes, so generally the developments have been in the past, not negotiable, unless you were looking to buy bulk. So you were looking to buy 10, 15, 20 units at a time. I do think that you might find now, I've got a leading to the coming market now, especially the guys who started building six, eight, or six, eight months ago where they're coming to the end of the development, they're going to be sitting with stock. Now it depends on their position and their balance sheet and their bank balances, whether they're going to be able to hold on to that stock or they're going to have to release it. So I do think we're going to get into a stage which is going to be unusual that developers probably will be starting more negotiable than they have been in the past. And it's going to be interesting because I think we're already seeing the market being heavily loaded with quite a lot of properties from developers and a lot of them struggling to sell and often some of them would, for example, offer a year's rates off in order to entice buyers to actually buy. And the moment you're seeing offers like that, you already know that they're probably struggling to sell a certain phase. And so if we were already going into sort of lockdown or the COVID era with a lot of developers having built for thinking they were going to build the next few phases and now we're going through this, perhaps as buyers, this is that right time to kind of say, you had 800,000, for example, for a one bit, let's see if we can actually negotiate. Because if anything, this is probably the time where even they are more negotiable because there might very likely not be as many buyers, even though it's a buyers market, there might be quite a lot of people who are very negatively impacted by where we can already see the state of the economy is going. So I think if you're a buyer who will not be as heavily affected, this is probably the time to take your chance with the various developers. And they're more likely than not, I think, in this era or as we kind of move as the months go on to be negotiable on their particular price. And of course, if you've just joined us, just on that point, oh, sorry. No, you can continue. Yeah, on that point quickly, just people need to understand the biggest expense in terms of owning a property is actually the holding costs. Those developers have taken, they've got financing and holding costs and raising taxes, it's really expensive within to sit on stock and just wait for somebody to buy. So if they're struggling to buy and you come along and you're willing and able to buy and you're in a position to buy, you're certainly going to be at the top of their list and I'm sure now going forward, like I said, is there's gonna be a lot of stock there. So they'll be more negotiable on their pricing. So the holding costs, once you start seeing a property sitting empty for a period of time, those holding costs are really expensive and the most expensive thing in property is an empty property. So you go after those. And that's very true. Grant, we've got another question here from Jacob Mangana who asks, how do I turn a PTO into a title deed and the procedure to be followed and the costs involved? A PTO into a title deed. So I think the best thing to do is your approach to a conventional attorney. The conventional attorneys need to take care of any conversions. They deal with the transfers and the title deeds and the deeds office themselves. So you need to find a good conventional attorney. There are several really good conventional attorneys out there. You just need to find somebody who understands the process. Be careful when you are selecting a attorney. You don't wanna go to, for example, a labor law firm who might have a conveyance to sitting in the back corner. You wanna go to a pure property law firm. And I know you had still not stand on recently SSR. So I would approach a company like SSR Inc. and approach their particular conveyance and have a look at it. Okay, we're slowly about to wrap up our conversation, Grant. But before we do, I think another mistake people or new home buyers potentially make, especially when you're buying your first home. I know the strategy when you now go into property investment and buying investment properties tends to be slightly different. And that's of course not saving for a deposit, right? I mean, it's probably should have been one of the first few that we have it. But people don't save for a deposit. If we're gonna just look at, you know, what are some of the reasons why people should even be considered saving for a deposit, especially given how banks are now giving out, you know, a hundred percent, sometimes more home loans. Yes, I mean, the reality is, if you actually look at the cost of a mortgage over a 20-year period, it is actually very, very expensive.  So, I mean, it's one of the biggest reasons. And, you know, it doesn't take long for you to just calculate on a million bond how much that's gonna cost you over a 20-year period. So firstly, it's long-term savings that does for you. And secondly is the short-term cash flow. So therefore, again, if you put down a 20% deposit, that means on a monthly basis, you are paying 20% less than you would have otherwise been. That puts less pressure on you. And, you know, I think what this lockdown period and the effect of the economy is really gonna show is people that have overexposed themselves, bought and likely to their bought properties that they really were on the edge of being able to afford. Now in a situation where their employers are reducing their incomes or spending on unpaid leave, in fact, they're losing their jobs, this is really gonna sort of show a lot of people up for their exposure to their highly leveraged assets. So you really do want to not only save for deposit, actually, but first to save for deposits to minimize the cost over a long period of time. But part two is you wanna be saving, we need to be saving for the potential transfer duty and transfer costs. So those are two costs that are often forgotten about when you're a first-time buyer, is this transfer duty, it's the tax on property over 900,000 that you purchase. And second portion is the, sorry, it's a million rent. And the second portion is the transfer cost, which is paid to the conveyancy attorney as the buyer when they're transferring the property into your name. So you need to save for deposits as one of those transfer costs and transfer duties. And that's actually also one of the mistakes I made when I bought. I didn't realize that when you're buying a bonded property, so when you're using a home loan to buy as opposed to buying as a cash buyer, there are actually two systems that you use. And I hadn't factored in the bond registration attorney. And it's because at the time, I simply just did not know. And I remember at the time I was buying two properties that I bought and I had two attorneys sending me their invoice, so I was aware of them. And then all of a sudden I had a third attorney sending me an invoice and I thought, wait, what's this invoice for? And then a fourth invoice coming in. And for a moment, I actually thought I was being scammed because they had all my details in this invoice and I had to call them up and they, the nice things that were quite sweet, were explaining that no, so this is your first property because you're buying it via bond, there's going to be a transferring attorney, so those guys are your transferring attorneys, we are the bond registration attorneys, and this is what we do. And luckily I had some reserves that I could tap into to pay for those, for the extra attorneys, but if you don't budget for it, you very likely won't be able to pay for them. And I mean, those two properties were both very good properties and really good deal. And I'm just really fortunate that I didn't, for example, have to then go take a home loan to be paying for, I mean, go take a personal loan to be paying for conveyance of costs, because that's also something you don't want to have to do. You don't want to have to take out a personal loan, whether it's for the deposit or for the conveyance of costs because the interest rates on that are actually so high. Grant, before I let you go, any other last tips that you have for viewers at home who are looking into buying their first home and don't want to make any mistake that could cost them money down the line? No, I think, you know, again, I think I started with it, is don't get too emotional about it. Don't rush into a property, you know, it's for the long term. And I really do think that people that are first-time buyers need to consider their first home actually as a first-investment property, despite the fact that they live there for a period of time. That's going to be your future investment and move on from there. So don't get emotional and take your time on buying. Grant, thank you so much for joining me. That's Grant Smith, the director at Epic South Africa. And this was episode eight of the Private Property Podcast. I've been your host, Samandonga Komal. Of course, remember, if you want to, or if you have any buying, selling, or rental needs, you can go onto our website on www.privateproperty.co.z. Until tomorrow, have a great evening, stay home and stay safe. Goodbye.


Excellencies and honorable dignitaries here present, distinguished delegates, ladies and gentlemen, thank you for giving me the opportunity to address you this morning at the opening of the 17th World Congress of the International Society for Telemedicine and EF. The theme of this year's Congress, making EF work, global trends, challenges and opportunities is very important and timely. In a world where EF systems are facing increasing pressure to improve quality, accessibility and affordability in a very cost effective manner, ICT are the perfect tool. ITU's work on EF is at the forefront of the transformation process towards information driven EF systems. At ITU, we are putting particular focus on the development of EF strategies and solutions, advancing the establishment of ICT infrastructure for EF and developing of global EF standards. I'm happy to note the very good and efficient cooperation between ITU, WHO and other stakeholders. Using mobiles for health service delivery is just at the very beginning and I do believe that it will be key in providing affordable, sustainable quality services, especially in the rural and remote areas. This is why I have recently launched the Empowering Development Initiative, which aims at capitalizing on the current mobile revolution for sustainable development. One of the main pillars of this initiative is of course MELF, because there is no way to talk about sustainable development without good health. This initiative is an open platform for cooperation to which we are all kindly invited. Let us get EF working for the world, I thank you.


Yo the Miami Dolphins got the game in such a chokehold right now that they got Mike McDaniel up in the stands chopping it up with the fans.  They said my boy was in the stands like pick a play right now and we're running on God. Hey, what's up? Y'all trying to see a flea flicker or what? Hey, y'all trying to see two with or a shovel pass at the goal line? Yeah, all right, man, check this out. Yeah, y'all might have to give that boy coach of the year.