Hello and welcome everybody. As I said before for the newcomers, this is a workshop, so you're supposed to use your laptop and solve some exercise that I'm going to propose. It's longer, so it will end at 12th and quarter past 12th. If you have any question please, you can interrupt me and we can try to solve it. Okay? So welcome. This workshop is about B-hat and Drupal for acceptance tests. My name is Ricardo Sanf. I'm a Drupal developer and DevOps. Personally, I really like free software and weird music. If you want to talk about weird music, I'm your man, so you can ask me. You can find me on Drupal.org as Tunic and I'm one of the founders of Metadrop, a company based in Spain that we all need to Drupal and we love to solve complex problems. And that's why we need a lot of testing to be sure that everything is always working properly. Let's see the world through of this session. The first thing is the workshop prerequisites that you need on your laptop to do the exercises. Then we will see a very fast B-hat introduction. Does anybody know how to use B-hat or knows about B-hat? Okay. And then we will do the exercises. So the prerequisites, you will need Git, Composer, Prolly make to do some commands, Docker and Docker Compose. Docker Compose released the V2 recently. I'm sorry about the tool I'm using. It's not compatible with Docker Compose V2, so you will need the all Docker Compose plugin and this is the thing that you need to run. So you need to clone this repository because here we have a super environment ready to be used with B-hat. So you have to clone this repository, run Composer install and then run this assistant that Composer boilerplate assistant and answer some question that the assistant asked you. Just do what we are going to do is to install the umami profile, you know, the demo Drupal profile, because we are going to do the test on that profile. It's... Anybody has any problem to see the URL? I'm sorry. It says Drupal Camp Spain, but because I did this workshop in Drupal Camp Spain, but it's correct. Okay. I'm sorry. It's a little bit long. I think it's good to do this now because you have to download some containers and you may need some time. So while we... Well, I introduced to B-hat. It's nice that the computer is, you know, downloading things and doing everything under the hood. By the way, I'm sorry, but this tool is tested on Linux. I'm not totally sure it's going to work on Mac or Windows. So you may have some problems if it's not working. You can solve the exercise with me, with the people that don't have any laptop. Does anybody need more time to clone the repository and run the commands? So I wait a little bit. Okay. Okay. It's been 10 minutes. Are you going to continue? Okay. Okay. Let's go with the B-hat introduction. B-hat is a BDD framework. That means a behavior-driven development. It's what you do is describing a behavior that it's automatically tested. You do... What you do when you describe this, you are writing acceptance tests using natural language. This... It's great because it allows you to kill the ambiguity because you have to write all the steps that the user should do to achieve a functionality. So what does describe mean? It means that you are using user stories. Anybody knows what is a user story? Where is it? You may know. At the end you are describing a functionality from the user's perspective. And this is written using the Gherkin language. As I said before, it's using natural language. We will see an example. Here is a user story using the Gherkin language. As you can see, we have a title. Then we have a short description of the user story. In this case, we are... This is a user story to allow a user to search the site. And after the... Below the description, we have two different scenarios where we describe different ways of doing the functionality. In this case, the first is just a... Regular standard search. The anonymous user goes to the home page. Then in one field, search... Types a string and then just click the search button. And as you see, the test says that there is a string that should be displayed. In this case, the example article. There is a typo, sorry. And the second scenario is an error where the user tries to search but there is no search terms type it. So the user should see an error saying that the user needs to write something. So this is a user story with two scenarios. And as you see, each scenario has steps. The gherkin language is what you have seen. It's used to write the user stories. It's organized using feature files. Each feature is inside one single file with multiple scenarios if you need it. Each feature has a functionality. And the functionalities are described or tested using scenarios because do you remember that you write in natural language but this is translated into actions, I mean into real testing. Each scenario is composed by steps. And there is the first word, as you can see, given when and then. It's not important for the test. They are only there to make the test more readable because one of the most important things is that this should be readable but non-technical users. What does automatically tested mean? It means that each step is technically mapped to actions. Each actions are PHP functions. And that means that its function can do many things. But usually they use a driver, a VHAT driver that gives access to the Drupal. And for example, the good driver what it does is to request some URL and checks the response. Or you can use Selenium 2. In this case, you have a full couple browser that requests pages to the site. And then you can test anything on the response. But in this case, Selenium 2 has support for JavaScript. So you can test things related to JavaScript or things. And also you have, for example, the Drupal API that allows you to run functions inside the bootstrap Drupal. So it's very handy to, for example, create content or to do other checks that are not easy to do using the Drupal interface. There is the VHAT extension. This module is a Drupal module that extends the VHAT and provides steps to use with Drupal. For example, accessing the site as a user or user with a role, etc. Or creation of content, status message detection, etc. We will see examples during the exercise. So just later it will be clear. Also the VHAT extension provides support for Drupal concepts like region detection on the theme. Or to detect if the user is logged in or not. And also you have the VHAT context. VHAT contents are the standard way to extend VHAT. The typical use is adding new steps. Like, for example, steps related to Drupal messages or the batch API or for the boot and purpose. Or something related to forms. At the end, because you want to have the tests to be readable by any technical user. But you many times need a step that is clear. In the sense of someone that is not a Drupal developer can understand it. But under the hood it does something related to Drupal like doing something complex. And that is the introduction to VHAT. As you see, it is very fast. VHAT has many things to offer. But the idea is to learn VHAT or to get familiar with VHAT with the exercises that we are going to do now. Anybody has any question or something? Yep. Does any of those extensions generate the PHP functions or have them out of the box? Or do you always write them yourself? Thank you for the question. When you write a step, for example. If you go here, we have different steps. Those steps are already in VHAT. But if I write a step that is not in VHAT. VHAT will detect that it doesn't know that step. And it can create a boilerplate code for the function you to write it. So, you don't need to, because the syntax can be not clear at the beginning. To relate one step to the function that executes that test. Inside the function, you have to write the actions that VHAT should take. This can be tricky sometimes, of course. But the good thing is that there is a lot of code using VHAT. So, there are a lot of examples. And there are also a lot of context available that make it very easy to make the test. Or even to check how some steps are done. It's okay. Any other question? Okay, so let's go with the hard part. The exercises. So, let's go with the Intel setup again. To make sure that everyone has their environment running. Then we will receive a new project. Then we will write accept and test. So, let's go. VHAT sometimes can be a little bit hard to setup. So, we are going to use Metadrop's boilerplate that it's a tool that provides you containers. It's based on Goodby. It has PHP, Apache, Selenium, anything needed to work with Drupal. And also with VHAT, because it's pretty configured. So, it's the same slide as before. You should clone the repository, run composite install. And when it's done, you should run the assistant. And when it asks questions, you should go with the default. But you have to select to install the umami profile. And at the end it asks about creating a sub-theme. It's not necessary. So, it's okay for everyone. Once you have the site downloaded and the system run, you can use these commands to control the containers. So, for example, I'm going to show you. This is my environment. It's okay. You can read it. Right? So, for example, if I check the... This is the URL. So, I can go to that URL. Well, it's this one, but if I go again... Oops. Okay. So, here I have my containers and I can do, for example... Well, I can bring them up. If you have run the Drupal Assistant, you should have the containers up and running. And you can, well, stop and remove completely. And also you can run MakeShell. Oops. Sorry. If you run MakeShell, you will be inside the container. Okay. And here we can run uh... VHAT commands that it's... They are simple. You have just VHAT to run the... All the tests. You can run VHAT DL to get all the available steps. And you can run only some tests that are tagged with a certain tag. We will see there later. So, for example, if I go here and I run VHAT, it should start doing the tests. Okay. Something important is that this is the repository you have cloned. As you see, there are many different tags. Now you are probably in the Drupal branch on the top. Well, it's an initial commit because it's an error, sorry. But as you see, the last one, almost the last one, the solutions, is where you have all the solutions. So, you have to check out the User31 Exercise Tag. So, you start in the first exercise. Okay. If not, you will be able to see the solution. And the idea is that you try to solve by yourself. Okay. So, we are in the repository. We check out the first tag. I mean the first exercise. Okay. And then, let's see. Well, first we receive a new project. And I don't know in your case, but sometimes you receive information like this. Like we have a project for our recipe website where users can see what recipes are available and search for them. We will need to categorize them in some way. We tag something similar. It should also have another content, blah, blah, blah, blah, blah. And a lot of information, not really structure and with no totally clear requisites. This, obviously, is a problem because when you have to develop a site, you need clear requisites and everything should be clear for you and for the person that wants the site. So, you need to write the specifications. Okay. In this case, we, as you may have supposed, this is the umami site. That is a recipe site with different recipes. So, we will have recipes and articles. We will have lists of recipes and articles by date. We will have search functionality, editorial workflow, related articles on each article page, homepage with a bit of everything. So, these specifications, obviously, are better than the previous one, but it's not totally clear. So, what we have to do is starting writing acceptance tests. And the name is because you agree with the client on the test. So, the idea is when all the acceptance tests are green, are running okay, the site is, can be considered done. The good thing is because the tests are written in natural language, you can talk with your client directly on the test. Even there are some clients that can write their own tests. That's something that's not very common, but I have seen it and it's great because they are forced to decide how the site will work. Because, I mean, you can't be ambiguous with these kind of tests. So, it's like a double win because you have the automated tests, but also you kill the ambiguity and have clear reggaets. So, let's start with writing acceptance tests. So, to write a test, you have to add a .feature file, where in a folder called tests functional, BCHAT features umami. Okay, you can go to that folder. In my case, if I go there, tests, functional, BCHAT, features and umami. Okay, so here I only have one file now. That will be my first test. Okay, so if we continue, we go to the first user story. That's a very simple user story that is that the user should be able to view a list of recipes. For this, I suggest these steps are given I'm anonymous user. Then there is another step that it's given I go to a certain path. And I click a text to click. Okay, because the idea is because the test should be readable by any people. You don't use like, for example, CSS selector or something like that, but you use real text that you can see on the website. And then you have a step to check the result. So you can use then the I should see a certain text. There is a file called recipe list feature that if we check it, as you see, it's just the beginning of the test. You only have the feature described, but there are no steps. Now you should start reading your first test. And I'm going to remember or remind you how you should do it. This is an example. Here is an example.  And then you should start reading, writing a scenario and a name of the scenario. And then the steps. What you should do is just take this file and edit it. It's clear. Do you need more information you want to try or do you just want to see the first solution? Anyone wants to do the exercise?  Anybody has any problem running the environment or the setup? Okay, let's try to solve this exercise. So the first thing that we should do is let's see what we have to do. Let's back to the first exercise. So what we have to check is that there is a list of recipes. If we check the site, this is the site that we want to test, the Umami profile. We can see that the recipes are here. Sorry, I didn't bring up my site. Okay, here it is. So this is the Umami profile. If we go to recipes, we see that there is a list of recipes. So let's see how to solve this first exercise. Let's go to the US one solution. And if we check the file, now we have a new file that it's called recipes feature solution. It's a different one because I didn't want to override your work when we change tags. And if we check it, this is the test. As you see, it's very simple. We first create a declaration scenario with the first lines. I mean, the content, recipe and US one is just the tags. So you can reference the test when you want to run, for example, only the test rated to content. And then we have the steps. What we are doing is first declaring that we are the anonymous user. Then we go to the homepage. Then we click recipes. As you see, if I'm the anonymous user, I go to the homepage and then I click on recipes like a normal user. And well, this is not the homepage, sorry. I go to the homepage and then I click on recipes and I see the recipes and then how we check that we are in this page. We use the steps then I should see and different texts. In this case, it's important to note that when you do the real tests, you shouldn't use the real content of the site because the real content of the site is going to change very often. So you should use pre-created content or something like that, but this is not the scope of this talk. I only wanted to introduce you to PiHAT. So if you are using tests on your site, don't test the site with the real content. So as you see, the test is very simple. Any question on this test? Okay, then let's go to the second exercise. As you see the user story too, we want to access the feature recipe on the homepage. If you check this, if you go to the site, there is a big hero content with a feature recipe. We want to be sure that that content is always on the homepage. How we can do that? Well, it's very similar to the other test. The suggested steps are the same. I am the anonymous user, I go to some path, I click something and then I should see a certain text. You can do the exercise using the next tag, this will be this one. Use 2-exercise. If you go here and you list the files, you have a new file that is the feature recipe feature. If you read it, you have the same as before, the initial lines of the test, but you should complete the rest of the test. Does anybody want to do the exercise? Can I give you some time? Or still? That's why I wanted to download it in the beginning, because maybe it's a long thing. By the way, before continuing, I'm going to show you how the tests are run. This file, it's the first test. I'm going to rename it. I'm going to use the feature extension, because that's the way Bihad detects the tests. Now my test is ready to be run. If I run Bihad, I have to do inside the container, I forgot. Now if I run Bihad inside my container, it's running the test. Those are some basic tests that are already in place to check that everything is ready to run Bihad. This is the test that we have just written. As you see, it automatically connects to the site. Click on some link and checks that the result page has that text that we have declared here. For the second story, we can go to the next solution. You go to the next solution. We have another file with the solution. As you can see, it's very easy. I'm an anonymous user, I go to the home page and I click on B recipe and I should see two strings. Super easy vegetarian pasta bake and also pasta bake is the ultimate comfort food. If you check the site, this is the feature recipe. If I go inside, I can see the strings that I have declared on the test. This is the title and this is the description of the recipe. Remember that if you do this, you have to use content created for the test. Not real content because it's going to change often. As you see, the first and the second story are very similar. The idea is that you get familiar with Bihad. The third easy story is to access a home page article. This is very similar. The user should be able to see an article on the home page and access it directly from the home page. This means that going to the home page and see an article on the home page. We see an article. We see that there are articles here. We can test that the user can see this. The steps are more or less the same. I'm the anonymous user, I go to path, I click on something and then I should see some text. See this exercise. This one is the same as before. We have the first lines of the test. An article in the home page. As a visitor, I want to find and see an article in the home page so that I can learn about topics related to recipes. I'm going to the solution directly. As you can see, it's kind of the similar as before. I'm the anonymous user, I go to the home page, I click on view article. If you check here, it's like I go to the home page. I click view article and I can see the give your oatmeal, the ultimate makeover and other strings that are what we have declared here. I use some tags to classify them to be able to reference the test later. If I want just to run, for example, the test related to content or to articles. Then let's go for something, another test that the user should be able to view an article including tags, related articles and breadcrumbs. For example, when we go to an article, we should check more features. In this case, not only the content or the title, but the breadcrumbs or the related articles. The user should be able to view an article including tags, related articles and breadcrumbs. The steps are more or less the same. The anonymous user, I go to some path and I should see some text. How we can do this? I'm going directly to the solution of this exercise. What we have, as you see, this is the article view feature, article view feature solution. This is a little bit longer, but as you see, what we do is I'm the anonymous user. I'm going directly to an article because I want to check the article. Then I check many text that should be present in my web page. The title, the description, some tags. For example, the breadcrumbs is here. As you see, home articles, daily free. Sorry, let me check because I'm not sure. Big and vegetarian or breakfast. Here should see tags and big and chocolate. Those are the tags. As you see, at the moment we have done very simple things, just accessing the site and checking texts. But what are the issues with this user story? One of the problems is that the exact text of the breadcrumbs is not clear or is already present on the page. What I mean is that here we check for big and chocolate. If you check here, probably big and chocolate is in another part of the page. It's not clear that you are really testing the breadcrumbs. Also, for example, I can test that there are related articles, but how I can test that the article itself is not appearing in the related articles. Because if I check for this title, this title could appear on the more featured articles. There is no direct way to detect that the same article is in the featured articles. So that's why we are going to introduce the fine regions of the theme. So you can declare to Piha the regions of your theme and then you can test things only on a given region. So, for example, in this case, you have to go to a certain Piha Jamel file where you configure the Piha. And then, as you can see, there is a property called region map where you can declare the different regions. What you do is just to add a name for the region that is produced inside Piha and then the CSS selector that Piha will use to detect the region. So, for example, in this case, the content region, it's just the element that has the class region content. This allows to create steps that are more precise. So if we come back to the yesterday's story 4, we are going to improve it with more steps. In this case, we are going to use the should see and also the I should not see. Because we don't want to see the title of our article in the related articles. So if we go to our code, we go to the next exercise, use 4bk, the file is article view improved. Okay, article view improved feature and the exercise is just the introduction of the test. So let's see the solution. So what we are doing now? We are using more or less the same steps at the beginning. We are the anonymous user. We go to the article, then we check some text, but in this case, we are using regions. In this case, for example, we say I should see the home in the breadcrumbs region. So this is the first component of the breadcrumbs. In this case, it's more clear. As you see, we have home articles and daily free and delicious milk chocolate. If we check the site, the home articles and the type. So this way we can be much more precise, as you can see. And also, we are going to check the content more precisely in the content region. And also, we are going to check for the more feature articles. In this case, in the site bar region, so we can check that we have the title. So the more feature articles is here, more feature articles. And also, we can check that we are not going to see the title of the content that we are currently seeing. We don't want that title in the feature articles, so we can use it. I should not see a certain text in the site bar region. So this allows you to be much more precise when you want to check your site. Okay, so let's introduce the next functionality of Drupal that is using the Drupal API. What we have done until now is just to query the site and do checks on the site. But many times, we need to do something more complex on the Drupal. For example, making changes on the site, or creating a user, or creating entities, or running cron, or whatever we need. So what we do in this case is to add in the API tag to the scenario. So in this case, it means that the Drupal API is used by APHAT. This means that the APHAT can run PHP code in the context of a bootstrap Drupal. So you can do anything that you do in your modules or code with Drupal you can do using this driver. So you can create content, run PHP, do anything that you want. The only limitation is that the APHAT needs to be running the same context of Drupal, so in the same machine or in the same container, of course, because what it does is to bootstrap Drupal and run the code. So to test this, we are going to write this user story 5. This user story is to access a recipe creative form. In this case, only the author user should be able to access the recipe creative form. Of course, no anonymous user, for example, or other kind of user. So in this case, the steps that we should use are this one. For example, I'm logged in as a user with the role. In this case, it will be editor, of course. I will go to a certain path because I'm logged in with the user with a role. The next steps are done with that user. So they just go to a certain path and then the user should see something and it should not see something. And you have to use the API tag to this scenario. That triggers the API driver. So let's check this case. Let's go to this exercise. This one is recipe creative form access. This recipe form access feature. This is the proposed test. As before, we have the feature describing the user story and then the beginning of the test. In this case, we have the tags and as I said, we have the API tag. If we check the solution, this will be the test and what we have. We have different scenarios in this case. So which is the first scenario? The first scenario is accessing our recipe creative form with an author user. An author user should be able to access that form. So given that I'm logged in as a user with the author role, I go to know the recipe and then I should see the create recipe text and I should not see you are not authorized to access this page. And the big hardware it does is in the first step, when it says I'm logged in as a user with the author role, it creates a temporal user with the author role and it logs the browser in using that user that has been created. So the next request to the Drupal will be with this logged in user. So you can start checking everything with that kind of user. We should check that the author user is able to do what we want but also we have to check that other users are not able to do that. Well sorry in this case, first we are going to check that the administrator user also can do this. So you see it's the same test but with a different role. And the other user, like for example the editor, the editor doesn't write articles, it just checks the articles. So the editor user should not be able to add a new recipe. So we have a test for that scenario that we log in as the editor role and then we go to know the recipe and we should see that the user is not authorized to access this page. We do the same for the authenticated user because the authenticated user, yeah? Probably you don't need it because if you see the created recipe, for example here, if you see the created recipe text you probably are in the edit form but in this case I wanted to show the different possibilities and also it's a way to be sure that you are in that place because maybe you have some text that matches what you are looking for so it's good to test a few things. Keep in account that this is very fast because at the end what it's doing is just checking the output of the web server so it's very fast. So as I said we first check that we have access with the proper role and we check that we don't have access with the roles that are not authorized. As you see it's the same but with different roles. And in this case you may see a problem is that we are using the same scenario but with a slightly different change. In this case for example we have the same scenarios but the only difference is that the role that we are using. That's not very dry, okay? So we are going to introduce something to fix this. That's reducing the test because the tests are very repetitive and only some parameters change so we can reuse tests. We can use the scenario online and as you can see what we can do is to use parameters on the scenarios. So as you can see we have an example and an scenario where we have two steps and those steps can use the values that are declared here. So we create an scenario and then we use some variables that are populated with the values of the table that we have below. So let's see an example with the same user story as before but using a scenario of lines. Let's go to this. Let's see the solution directly. Let's see this one. So it's more or less the same as before but in this case for example the access recipe creation formed with an authorized user we are using it for the administrator role and the author role. It's more or less the same but the only thing is that here in this step that I'm logging in as a user with the role whatever this variable is a place but those two values. That means that VHAT under the hood is going to run this scenario two times but with different values for this variable. So what we achieve is that we don't write the test twice but we run the test with both of the roles so we are sure that it's working for those two roles. We do the same for the roles that should not be authorized. We use the same scheme. We use the scenario of line and we use two roles the authentic user and the editor user. They shouldn't be able to access the not add recipe URL. Let's continue. Let's check how to use a complete browser because what we have been using until now it's just only HTTP request and process the result but sometimes you need a full browser. With VHAT you get this using the JavaScript tag. So if you add the JavaScript tag to a scenario JavaScript capable engine is used. It usually is for example Chrome with Selenium 2 so it's great because you have a complete browser and you can do a lot of many types of checks. For example this is required if you want to check things like the Cica editor because Cica editor is based on JavaScript so you need to have JavaScript available to test anything on the Cica editor. We are going to test the recipe creation this is going to be harder of course because we have many complex well many fields that we have to fill so those are the steps that I suggest for example I fill some fill with some value I select some value from a select list or for example scroll into a fill this is important because VHAT checks even the visibility of items so if you try to access an element that is not visible VHAT is going to complain and this is good because it's important that the user is able to access an element if the element is not accessible is not visible the user is not going to be able to use it so the test should fail. So in this case because the form is long enough we may use the scroll into fill there is another step that it's called filling in the rich text editor because we are going to use the Cica editor and also we are going to use a media it's a complex step because we have to upload an image make it available and select on the interface because if we do the assigning a media to the form manually with steps it's going to be very cumbersome so we have a step that does it for you so the test is readable for any user let me show you the form that we are going to test so if we go here oh the URL is not correct but I can fix it if we go to add a new content we are testing the recipe right recipe creation so we are going to test this form we have the name we have a language, preparation time, cooking time we have text fields we have select we have a media field we have a Cica editor field as you see it's not super complex but it's not so simple as the beginning let's see how we solve this let me go to that exercise this was the six I think let's see the solution directly so how we can do this well we start with our scenario then there is a step that it's called given file with name this is a long name and that file and then the next step is that there is a media entity as you can see the media entity at this step is using the image that we have declared previously so what we are doing is creating an entity a media entity with this file this is required because we are going to use that media in the form so what we do as you can see the test is readable so what we do is we are using we are logged in as a user with certain role remember this is a scenario line so we are going to test this with two users the administrator and the author so we go to the recipe written form and we start filling the different fields for example the recipe name or the preparation name or the number of servings as you can see we are using the labels of the fields you go to the form as you can see we are using this label why because obviously it's more easy for any non-technical user to read the test if we use these labels if we use anything more technical we will break the purpose of making the test readable for any user so fill the different fields select one element from the select box for example it says medium from difficulty so this will do go into difficulty and check in this case medium we can select easy, medium or hard whatever but as you can see we are using always we are using text that are available in the page we avoid any technical string then we scroll to the direction field that's because the direction where it is the direction here it's down below so we need to scroll and this is then we use the rich text editor step because it's a secret editor and we need a special step to do this then we assign the media that we have created before that means this step what it's doing is going to the media clicking here and selecting one of the images here that we have just uploaded ok and at the end we press save and we check the result we check that there is a string saying the test reside because this is the title of the reside that we have just here we see that this is a summary because it's what we have just here ok and you can see you will see the recipe directions and because we have used it here also for example something that I forgot to add probably is to check for a text that says the recipe has been created don't remember exactly which is the way that Rupal said but you can check that kind of text ok the steps the thing is that I forgot to show you the steps if we go to our container and we run the the BL command we can see all the available steps ok as you see there are many of them obviously you will probably not know them by I mean you don't have all of them in your head but for example if you want to something related to Chrome you can read the result and you see that there are different steps to run Chrome Elisa Chrome search API etc or if you want to, I don't know something ready to fill you can check and you have here all the different steps as you can see the steps some of them use some like expressions because the steps are kind of flexible so you can write the test in a way that is readable for users but yeah if you want to know which steps are available just run this command and you will see a lot of steps that you can use in your in your tests sorry should we use the the microphone sorry can you go to the microphone if you want you can ask me if it's not too long I can repeat on the yes usually the all the steps that create content that are a step already created I mean steps that are provided by the different vhat contents that are available usually they delete the content if you create the content manually for example going to for example in this case the media is created by vhat it's going to be deleted but the content that we have created using the form because you have created by using the regular standard form vhat let's say it's not it doesn't know about that content so it's not deleted so that's why you shouldn't run this test in an environment that should be not polluted at the end the environment can be polluted ok so let's go to the next functionality that it's creating custom steps as you can see we have a lot of steps but sometimes you need to add a specific step for a project to simplify repetitive actions of for example to maintain the variability of the tests for example for example in this case we want to add a new new vhat what we are going to do is going to a file that is called feature context that you can find inside the code base and what you do is to create just a function ok we are going to see it and here you declare the step the text that it's related to the function ok so when vhat in context something like this I do something with an argument vhat calls this function ok with the argument as the first parameter vhat uses mink to use the browser you may know mink because it's in core, in tuple core it's used by the web test class to handle the browser but it's something that they have borrowed from vhat so if you use the api tag inside that function you can use any function of tuple core or any function of your tuple model or whatever it's available to tuple and obviously you use php to run this so for example in this case we are going to create a custom step that is when I go to recipe list why because we want to keep the test very clear so for this what you have to do is to go to test functional vhat feature context and add your new step there so for example what we are going to do is let me show you we are going to the sorry solution 7 test functional vhat bootstrap here is the feature context here is where you can declare your own steps for your project because if you have different projects I mean if you want to reuse a step for different projects you should use a vhat context but in this case we are just using adding a new step and this is the step I go to recipe list the text is very easy I go to recipe list and when vhat encounters this it will run this as you can see here we are using code this is some function provided by mink in this case we go to the home page we get the session we get the page and inside the page we find a region then we have an object if we don't find the object we don't find the region so we throw an exception if we have the region we look for a link that is called recipes because we want to go to recipes a page that recipe so with this code we have created our custom custom step and we can use it on our test if I go to see the available steps now it's here so I can use it in my test for example if I want to check something about the recipe list instead of adding I go to I click on recipe and go to that page I can just use this one single step to make my tests short and readable that's all for the exercises I would like to add some references here you have the vhat official documentation it's very interesting a lot of information there also in this setup I have used two set of context one is from Nouvelle it's a a company that provides vhat context that means a lot of steps that you can use and also our own vhat context from Metadrop that it's an extension of Nouvelle we provide on top of that so using these two context you will have a lot of steps that will make your test much easier to create and also this is the dropout boilerplate it's a tool that we have created it's based on goodby it has containers for running dropout and it's nice because you can just run a command and you will have a local environment with Docker and vhat pre-configured as long as along with other tools like backstop.js but the most important thing is that you will have vhat ready to play with it because as I said before vhat sometimes is hard to configure so at the beginning it can be a little bit frustrating but using this you just run a command and you will have vhat ready to run ok so that's all do you have question? in your scenarios you used way more annotations besides from api what does the other annotations mean because in the first scenarios we got no annotations and then there was the jump with a lot of annotations yeah those annotations do you mean this thing right? yeah those are the tags so the scenarios are tagged with those values there are some tags that are just simple tags that they have no meaning it's a way to reference them and what I mean with reference is that if I run vhat vhat is going to run all tests but I can say ok I only want the I think there is a content one so now vhat will run the content but only the content scenarios I think that there is no content sorry so some tags are just for tagging and other tags some background like the api one exactly so there are some that they have just tags but the others for example the api or javascript they obviously you can run only the javascript for example test but it also has a meaning that in the case of javascript it's using a real browser or in the api is just to have the Drupal api available yes thanks welcome can you talk a little bit about like you already have a project you already have a project and then you want to integrate this in an existing project how would you do it how would you set up it you should be able to do this because at the end you don't need to change your site at all to require some composer packages the functionality of your site should be the same and maybe add in the feature context but it's a class that is only used during the tests so your site is totally untouched it's the same so it depends on the case but I will prepare VHAT to be run and then start covering the site with tests so you have to add the composer dependency for VHAT and then to install VHAT you have to require VHAT itself and the configuration of VHAT is here here we have the VHAT Jamel it's a jamel where you configure a lot of things as I said it can be hard to configure so that's why I recommend that boilerplate and here for example you declare well VHAT has switch you can have like different set of tests here are all the context that we are using and the configuration of those context for example there is a context related to responsive that allows you to test the things in different resolution or screens for example there is a debug context that if there is an error you can get a screenshot so that's very handy because you see an error in your CI and sometimes it's what has happened and it's nice because you can check the screenshot and you can see exactly what happened extension I mean as you see it can be a little bit complex that's why I recommend to start with something that it's pre-configured but what you have to do is just if you want to add VHAT you will have to require VHAT on PHP sorry in Composer add this VHAT Jamel and the feature context that it's well you can start with an empty one and finally does VHAT has any kind of report generation yeah if I run VHAT it starts to run the tests and in this case at the end you see that it has run two scenarios for steps and everything is okay if it fails I think it returns an error on the command and you can export the results in a format that CI can understand so if something fails CI can detect the problem okay thank you great workshop any other question what is your strategy with content when testing content like in the workshop you took the army but in a real project we just dump all the content and then start we don't do that because for two reasons one is because of the content is not stable so it may change at any point without any notification and also because we have some project that they have a huge database so it will be not practical to import 10 gigabytes of data you can do some tricks like removing some tables or do that kind of things but at the end it's not ideal we will have problems at some point so what we do and it works very well and we use also in the local environment we have a command that spin-ups the site from a local configuration so it creates an empty site but everything is configured because we use the configuration system of Drupal and then usually you use the default content model that when you enable that model it automatically creates a set of content so what we have is a brand new site with just the content that we need to test the functionalities this is very fast it's very stable because there are no changes and really if you for example have problems because there are some test that fails or there's some situation that it's failing because of the content for example you have a long test or whatever you can just add a new content and default content with that that kind of content so you can test that situation and that works very well for us yeah please so I have a few questions first is I was a little bit confused how this media yeah can you talk a little bit louder thank you I was a little bit confused how this media entity has been created could you elaborate a little bit more about that where we can found some documentation how the syntax looks like for that because it was a little bit confusing okay the media step is the most tricky one okay it's the most complex because you have to create the media under the hood and then select it what we are doing is we check the steps here let me go there tests functional we had features okay it was the media one was the creation of the recipe that's I think it's this one yeah we use several steps the first step is given fillet with name whatever this under the hood creates a file for Drupal then in the next step we create a media entity using the Drupal API here we are not using the edit form we are creating the entity directly using the Drupal API and what we do is referencing this file that we have declared before okay so at this point we have already a media uploaded to our site and it will be available on the Drupal interface and then we have this step that it's called I assign the media with the name blah blah blah to that fill internally what it does this step is to go to the really what you will do as a user it goes it looks for this button it clicks it and then looks for the media that it should be available in this list click it for example this one insert select and now it's ready that's why for example in this case you need to use a complete browser because obviously with good you won't be able to do this so that's why I recommend to use the context that I I mentioned before because those contexts provide that kind of steps that are very complex because the big head extension is the Drupal model that it's contributed it's I mean it's good it's a very good model but it lacks a lot of steps because at the end there are so many things that you can do with Drupal that obviously they can't cover everything so it's described in this context on how the property should be created if I describe those context like what they do I'm still not 100% sure how I would be able to use them how I can use that property which property I can pass and so on how you can use them I'm sorry I don't hear you well yeah I mean I'm still not sure how I mean I understand what happened under the hood but I'm not sure where I can find the guidance in the documentation or the files which properties can I use in which syntax and so on how how to use the context in the syntax sorry because they are talking in the other session and I I'm hearing like the voice we can speak up anyway I think it's late yeah I'm not going to take much time after the session we can talk I have just one more question do you have any like a pre-baked docker images that will allow us to run Bihad test with Drupal in CI CD like do you have some good examples how to use Bihad with CI I mean I'm strictly looking for useful images do you have something what you can recommend I mean we use Bihad in our CI with the containers provided by this boilerplate so we bring up the containers and run the test and it works pretty well I mean we have a Chrome container a Chrome Selenium hub and some other setup but it works pretty well okay thank you thank you yeah I think it's super late I'm sorry ah okay okay I was going a little bit faster okay so we may have more time I mean it's super long okay so I was wondering if there is a way to execute some things right before running the Bihad that's a good question because there are there is a way to execute steps before each scenario it's called scenario background I didn't add to the workshop because it was already too too long but you can declare steps that are run before each scenario inside a feature if you remember there were some features that have several scenarios so you can like prepare each scenario no I meant like at the beginning before running any scenario and in the end like hooks for example before any scenario yeah I was thinking that maybe could be nice to like for example do a site install an important configuration and then use that to run the different scenarios with a initial point already for example install a site with a certain configuration you can do that but you shouldn't do with Bihad because at the end Bihad just is testing a site that is already prepared in our case what we do is we create I mean we spin up the site and create the site and prepare the site and then we call Bihad that kind of big configuration you should do before Bihad what you can do Bihad has some hooks so you can run some PHP code for example before any step or before or after any step or scenario or feature for example I don't know one of the things that we do is disable or touch the cookie banner because in a site with the cookie banner is very annoying that we have to click every time that you are running a test so instead of polluting your test with the action to click that banner we do before each scenario yeah yeah yeah thanks for sharing this one basically in my previous project I'm using this particular Bihad Bihad you are using Bihad so we have like thousands of the test cases already written and we are using the Chrome driver to running this test and we continuously sometimes when we have like long running test and then it will be timed out every time and we did not find any solution for this do you mean it's a timeout when you access a page or a timeout when you are running the test for hours or something like that yeah for longer running tests we don't have the problem maybe because our test they take at most one hour and half maybe something like that it's true that sometimes we have some issues on the system in part will say so we have to deal with the containers but so far we have always found a solution but it's true that we don't have test running for hours or something like that so I'm sorry I can't help you the last question like can we also integrate the J unit in this particular Bihad what thing? the J unit for making the HTML report PHP unit no no J unit J unit? it is a kind of ah yeah sorry I mean I don't say that in English so I'm not used to the pronunciation I think that it can export it as with that format but I don't really remember let me check because maybe there is something here related to that the outs maybe the format I think format the J unit ah here it is I don't remember exactly what format we use but it's integrated in our CI and the CI it's aware of the tests okay thank you so much thank you thank you very much for coming and for staying all the workshop if the workshop is prepared to do the exercises that was the original idea so if you want I encourage you to clone the repository and do the exercises at home because I think it's very ah I mean you will really be familiar with Bihad it starts very simple and it gets complex at the end okay so thank you


to this or a show, Human-Human-Architecture on Think Tech Hawaii. This is our 269th show, and since last week, we don't know any more which accumulated viewer number you are, but we luckily know someone who knows that, and that's the one who runs us, our producer, Eric. Let us know, Eric. Hey, Martin, we currently have 14,500 views totaling up to over a thousand viewing hours on YouTube. All right, thanks, Eric, and not that numbers matter as much for us as they matter in these moments as we speak in the United States of America. We're still counting some ballots for the midterms, and we are back here as the Drei Glatzköpfe von der Tankstelle, which means this is your weekly German lesson, the Soto. You figured it. You already said it, so it's the three bald guys from the gas station. Oh, the three bald guys from the gas station. So besides me, Martin, the Spang and the Waikiki Grand, it's you, the Soto Brown and your Bishop Museum.  Good to have you guys back on board. So let's cover a little bit what's going on here. Again, we are all electing our governor, so most of us. How is that going for you, Matt? Can you briefly give us an update? Marahili was successful last night, which I think we're all very happy about. So good news on the from the East Coast. Indeed. And similar here, if we put it even in here, we have Mr. Green as a new governor, starting in December. Not that was a great surprise, but as you said, the Soto is still good to know, and still it's good to be confirmed. Yes. And when I was walking, I mean, obviously, that's a name that everyone, us including, will use abuse for making cross-references. The star advertiser, our journalist professionals, when I was out on my to my run this morning, I see a laying on the floor delivered to some neighbor and it basically said green lights. And we obviously want to see a lot of green in the green here, because in the in the red states that were my stepstones, I have to say, you know, ashamed, both in the prairie and in the desert, where the cities I taught in I coached were the capitals and therefore the intellectuals and therefore they were like blue islands in the red seas of the states. And in Arizona, it's still going on. And let's not go there. Let's stay here. But again, there's one thing that Josh Green has been, you know, part of his campaigning was actually something that has to do with us a lot is affordable housing and even more specifically, some were the most in need, which is homelessness. A little ironic to Soto, we had four builds to supposedly pass and vote on four amendments. The one that looks like it didn't make it is actually the affordable housing one. So go figure that right, we are starting out with a stretch with hiring or, you know, appointing a governor who says, I want to do that. And then we the people don't have the majority for that. How odd is that? That's the way elections go. That is just all you could say. I guess so. So as we started and dragged you mad into always starting out looking at the proposed beauties on the island here, which are the ones to come. So there's a new one here. And I know you guys will say, don't judge a book by the cover. That is very fair. And we know I'm going to be the one to say, well, how much more do we need to know to judge this? So this is Soto, you want to brief us where that will be? Actually, this one, I am not a hundred percent sure where this is. I've looked at this picture. Okay. Under the green, under the green name. Yeah. Green as a green space. Green space. That's a park. And that's Mother Waldron's Park. Oh, yes. That's right next to that. Right. Yes. And this is I have been, I've been trying to figure out exactly where this is going to be. I think this is where Fisher is. I'm pretty sure it's the small building where Fisher Hawaii is. And then the park will be to the right. This is an area that's growing a lot. This is an area that is currently gentrifying and getting high rises put into it. It's also somewhat hip in how it's been developed because the salt at Kakaako shopping area is across the street from this or very near this. So it's not a hundred percent a surprise, but at the same time, it is going to be yet another building that's going to change the character of that area quite a bit. And we said, we compared it, met to Hamburg quite a bit that you know well because of the projects that you did there, the Marco Polo Tower and the Union Lever Building. And we pointed out the big difference is that in Hamburg, the state was king again, making sure it got the land when it was at the lowest point cost-wise. And then they were in charge and they played this as an argument. I have to say this one here is unfortunately state land too. And it's not unfortunate that there's state land we use for housing. That's very fortunate. But I start out in saying it's unfortunate to see what's been dumped on there again because there's a tradition in Germany, Matt, which you know so well because your company, the founders come from it, it's called Sozial la Wohnung Spa. And maybe we want to talk about that a little bit. Yeah, I mean basically social housing, if you want to just call it that, doesn't have anywhere near the kind of stigma I think that it doesn't in the state. It's really actually you know very often solidly middle-class housing of a very high quality actually. But typically rather dense and you know not what you would consider the American dream kind of housing, right? Your own land and your picket fence and all of that, but very well accepted and respected as a mode of living in Germany. Yeah, and we know this here from who feeds us with his newsletter just timing wise perfect just before the show. This is Senator Stanley Chang and he did again. And I already sent you but I think he didn't give us time or I didn't give you time. The last article he wants to share with us talks about that one has to go vertical and one can't stay. And this is why Sozial la Wohnung Spa social housing is predominantly vertical, which we call stacked lanai here. And it tries its best under the circumstances to be affordable. Yes, but it also tries to be people friendly, not just planet friendly, which you guys try very well as we will continue to talk about and explain in details how. Let me interject a question here, which I want to ask both of you because I am not clear on this. One of the problems in the United States is that low income or social housing undergoes very little maintenance. And so it gets built, but then it gets trashed in a lot of cases. What's the situation with that in Germany? What is the upkeep on this housing? Who of us wants to mad? I mean, go ahead and start. I mean, of course, it's probably there is no clean answer across the board.  Yeah, you remember the first kindergarten we did the Soto we looked at that and the second one are actually in social housing areas. And there is a stick mine, even our Republic German clients who built the kindergartens were saying, Oh, we got to make this, we got to secure this, we got to fence it in, we got to have anti graffiti, you know, facades and all that stuff. But as we know from the two projects, and as you know, you know, Matt, as you do it all the time, if you make the people integral to your gestalt and not keep them out, then they will not be, you know, mad at what you create. They will like it and they will. And so I in both cases, you know, I know from these neighborhoods very well, there is, there is tension. Yes, because sometimes you create ghettos and wherever you make a ghetto, if it's a ghetto of just poor people or even rich people in the kakaako you're talking about, we're creating a ghetto here, but a ghetto of rich people, it never works. So the if there is one problem is the mono structure of it, that you throw only the same people in it. But that's about it. Otherwise, you know, and, and, and sometimes the people then, you know, feel like they're ousted and not integrated. And then they, they express that but that's the most you get. Otherwise, you know, it's I hear you the solo because who is next to this one here is Stanford car. And we were looking into what you actually see show quoted at the bottom right, at this building that wears the car may I may I helmet on that the rules to cover up the AC. There's like, he was saying, you know, I can't make social housing. That is easy, breezy and we're like, give us a break. We're, we're who says that and why do you say that. And so there's a lot of these excuses, right? And social housing is one all it's going to be high maintenance. No, from our experience, where not necessarily where it comes from, but where it's, you know, done a lot. This is not a reason for, for excusing yourself and saying, sorry, we can't do this.  And kind of like, it's a kind of a sort of a, what do you call that a vicious circle, right? A feedback, right? Whereas if you actually create some amenities and some things that people feel valued and kind of nourished in the, in the place, they actually begin to take, I mean, what you notice in, at least what I've noticed in the kind of developments I've visited in Germany is that they're quite well cared for by the residents, right? They put plants in front of their doors and they hang things outside their doors on the walls and they take, you know, they take a lot of pride in the public parts of the building and you know. And they do this here as well.  That's exactly, you know, the single loaded corridor or easy breezy and they're deep enough so they can make their little front yards. But in the sibling of this one, I'm already sort of prejudging it at the bottom right and not only is it adjacent to, but it also looks like we got pretty depressed when we toured it down there.  So the young generation gets increasingly really shocked by the stuff and I was quizzing our youngest semi and I said, you know, how does this sort of look to you? We started to talk about styles and hair styles and something that continues to be on vogue is the undercut, which none of the three of us can wear but the young ones can, you know, all we can say all we have is undercut. But here we identified this in our ongoing show. This is the second from top right show quote in Chicago here where these Misi and glass high rises that he would turn around in his grave because they don't have the elegance and delicacy that his have and all of a sudden they start to like carve out something and that's like the undercut part of that which this one here seems to like wanting to mimic as well as another fashion but come on we're not Halloween is over right we're not putting costumes on anymore why don't you design this from inside out and rather than throwing the green on which we might still hope this might be vegetated but probably not because talking maintenance the way it looks how would this work and it's edible green no design this from the inside out and you met and we get to the next slide soon but you said, you know, if we're making the reference to Obama we should talk about his sorry Magnum PI we should talk about his red Ferrari which we will that made me think about okay this is referring to our ongoing show disorder about mobile and immobilia which is the car that I can think of and I I want to quiz everyone and you please pay attention about the invasion of Toyota Camry's or the other day I was I was walking you know at the park close to school because I was short on time and I and then paid attention to the cars park and they were like I swear you 80 percent Corollas and Camry's that are never basically pictured because they are so nondescript and I did my homework I found the first this to the top left is the first ever from the 80s Camry and you know everything was designed more essentialist and cleaner in the in the 80s although that might be our age met and got becoming nostalgic but it certainly even then was not a car that was made to like okay I wow you you know potential buyer it was like okay I'm going to make you feel safe right because I'm going to be a car that doesn't break down so I think what do you guys think isn't this like the Camry architecture but it's sort of false because the Camry's might actually make people feel safe and actually make them safe and don't burden them of high maintenance costs but we hear these buildings do like the second from bottom uh show quote here this K Kali whatever you know people had to move out again it's like you buy a a Camry or a Corolla then all of a sudden you have to drive go to the shop and get it fixed every day that's like cheating right you then not ever build although in all fairness that's precisely what you have to do with your Ferrari so yeah yeah but I think I get to the next slide because we might be done with this one here until we know more so here we are with the Ferrari but you know you know Matt right if you buy a Ferrari and you even fetishize maybe it's you know that your that your mechanic needs to see it so often like you when you like to see the hairdresser I mean I've known people who get crazy about and fetishize and maybe this is just jealousy and you know because we don't have this anymore but actually not because I need to see the hairdresser myself which is me every morning but let's talk about again this reference between and maybe it's not about the exclusive in here because I want to point out that just to remind everyone uh Magnum was not the rich guy who owned that Ferrari but he basically almost like stole it every now and then from Robin Master who was the owner of that estate who lived in the big mansion and he was the sort of bum that was really interesting depicted by the first time on TV what I heard that Vietnam veterans were not depicted as the post traumatic sort of bums victims but as someone who is constantly struggling with that but is trying to process that and ironically they when they me as a kid I saw this up I watched it on TV but not that hardcore stuff because they're censored and there wasn't any on any dictatorship at government anymore that we had been before and you know this was supposedly democracy but they thought we Germans aren't smart enough to or not tough enough to handle that and they censored out some of that part and not until it came back on private TV they basically did the whole did the whole story so he was uh and then where he lived this is interesting too he lived in the guest house that Obama for whatever reason kept which is the gate house next to the fence the wooden fence we showed last week and for the longest time we had suggested you know I think the only way he can still sort of look into the neighbor's faces is when he lets some of the suburban nomads live in there which then comes full circle to the script of the TV show but recently we've been thinking further and thinking about something else where he might want to move right so that is within a Ted poll studio which is bundes and Genesis office into their how holy lofts which is not far away from where he grew up in which we show court at the at the top right so that's where we are now so you know I don't know if obama listen hears us but if he listens to us he probably thinks we're crazy he should you know leave his paradistle idyllic single-family residence out there in the countryside to move back in the city but that's actually what people should do yes sorry to say or I'm happy to say I'm actually not sorry well the the downside of that is if you move back into the city you have to have a place for your car and that is actually a very important point of new developments some of which are intentionally not including places to park cars with the idea that the inhabitants will either walk or use public transportation or maybe use a two-wheeled vehicle so your Ferrari is not going to be easily accommodated necessarily in some of the new buildings that are intentionally leaving cars out yeah that's a very big development in any American development of any kind yeah and our mid-century modern master run was sending us an article to that regards that yes yes one little nitpicky thing but actually important while our RPIing mobile is convertible by nature and you made made another suggestion because you are a very responsible owner of electric cars only right yes correct and you said you know if not in Hawaii where would we want that right because we got the sun out all the time and we don't drive much so why don't we have more electric cars and I'm biased from our easy breezy mobile mobile I basically we have to say that the Ferraris and I you know it's hard to get the graphics right and the information right at the same time but you see the one the three or eight the original one from the 80s is a teatop so it has target tops so you can easy breezy it and in all fairness I have to correct I thought the one of the reboot is not but it actually is different than the pictures so they stayed in that tradition and because we haven't said it but we have to say it why is Bundit and Jen is building in there because actually that show quote from last week guys go back and watch it they were filming an episode of Magnum PI the reboot in that building so come on yes that's why the picture of the interior is one man punching another man it's not that the people who live there are violent it's a fictional depiction going on in the building and he drives and then and then the reboot the reboot they drive the four the 480 or whatever that is on the yes yes yes that's it that's it yeah I wondered where that came from and it all comes from that and all comes from Magnum and the Ferraris and so again we're just telling Obama you know until he doesn't want to hear it anymore as if you wanted to begin with you know this is the tradition so your tradition out there isn't anymore you can just you know sell it or have your other buddies in there and you go back to the to the roots anyway so the yeah even better exactly so urban and again back to the first I mean not back but remembering the one that we're not excited about on the first which again we said before we have to say on you know as long as we see these they could although not should be with you in Boston or with me back in Germany because climatically they would work not that they would make people over there happier in there than these climatically they were so we will continue now to have you met as a great expert showing us how one should actually do it in the temper and that gets us back to your gensheim building next slide and not and not before also show quoting and reminding us what we were so close to but I guess none of us made the connection that where we use state recently in the Kaimana Beach Hotel is a typology typologically similar bees because it's a courtyard type I'll be at an outdoor courtyard which which actually works very very well when you open the doors and the ventilation happens here I mean at gensheim it actually is also a naturally ventilated environment you can open the flaps in the roof and in the interior windows from the offices so that you get some air movement through the atrium which then spins a kind of a prismatic chandelier that's inside of it which is reflecting light down from the top from the heliostats there in the roof and then the air movement from the bottom of the atrium up sort of makes that whole thing sort of move and animates the light inside the space so the whole idea here is that if you're going to build a building with such a broad floor plate you need to kind of find a way to introduce natural phenomena in there to make it livable for people and we see this very well in the next slide if you want to go there exactly although once again you explained to us who did the beautiful initial party sketches martin vanminghausen so again these were from martin as well the previous right right exactly but this really illustrates puts images to the words which you just explained and and i want to just point out something that's relevant for me and matt when you just visited recently bishop museum hawaiian hall which we went into and looked at is the exact same design as this which goes back to the 19th century and as i said at the time this was a design used for both museums and department stores at that time before there was electric lighting they'd lighted these interiors with skylights and windows on the side and that is how you were able to view the either the merchandise or the museum artifacts on the mezzanine floors that surrounded that open atrium so this is actually a very old design which you're using again and i'm happy that i'm able to see that uh making reference to a building that i know very well here at bishop museum we call that such thing an archetype right around forever right the big difference and you very you took your time to explain to us that you know bishop museum used to be open as well until you guys closed it but for a good reason because books and artifacts are different than people because they need to be kept away while you met here did all the efforts to uh basically people frankly this here this type which we know a lot from like john portman's hotels he's the like the inventor antagonist of the courtyard hotel right but very few of them are basically you know bring nature in in such an abundant way exactly and i think the other key element of that is um you know the sort of the portman examples and a lot of the kind of like like like commercial or bank examples of atria they're almost always completely conditioned right fully cooled and heated throughout the year and in in that sort of scenario they become extremely wasteful um this particular one is is only very lightly conditioned during the most extreme parts of the year most of the year the windows can be open you get natural ventilation in there and it's actually kind of a relief to come out of an office and into this larger volume of space that's sort of treated like a like an indoor outdoors yeah yeah and you get the stack effect the natural effect that arises up and you're right in the in the generic atrium hotel you've got that closed glass roof which is really counterproductive right so and energy intensive yeah absolutely so believe it or not we're already at the end and we want to know what these heliostats are so uh you will show us in detail next week that's how we will start out well we likely we already know and we're doing this intentionally you figured this out by now we drag you in for our architectural criticism on the island show then you know we squeeze out your project like you know the most you came but we really appreciate your you both uh you know internal and external um you know joining us on this because the Soto and I speaking for myself feel like we get so blind no glad to do it over almost three good good next week I'll have to be from I'll be in Detroit when we do this so all right even better report from there I'm sort of the field correspondent now right yeah yes you are yes you are yes you are whether you want it to be or not you are thanks for that okay see you then all for that next week and until then stay easy breezy breezy easy bye bye aloha thank you so much for watching think tech hawaii if you like what we do please like us and click the subscribe button on youtube and the follow button on vimeo you can also follow us on facebook instagram and linked in and donate to us at think.kawaii.com mahalo


5th ranked Florida and 25th ranked South Carolina. Put on a show for the fans in attendance for this one. Top of the 14th inning tied at 7. This one's brought to you by DraftKings. Go to DraftKings. Use promo code Johnboy when you do. Get the app. Make some bets. We have our own bets in the sports book now, which is pretty amazing. And here we go. Strike one, 92 miles per hour. Strike two, 96 miles per hour. Doesn't get the outside pitch, but uses the outside to go outside again and break it in. And Ump says, OK, I'll give you that one. Strike one. And he goes fastball. Fastball, 0-2. Gets a little rollover foul ball. Changes the eye level. Gets the K. So one out away from getting out of the inning. And he's got a lefty coming up. But he falls down. 2-0 count. Batter knows the fastball's coming. Pitcher knows the fastball's coming. He takes a little bit off it to find the zone and kabam. Florida goes way deep to center field. Centerfielder makes a good play. Had it lined up just out of his grab.  Then the ball comes right back to him just to remind him, like, hey, you didn't catch me.  Meanwhile, guys round in second doing a little tongue wave. Look at this little tongue outside the mountain. No little nut grab to his own team. Having some fun thinks he's the hero of the day. As Florida goes up by one run in the 14th inning, and the Florida fans in the stands go crazy. But they still got to get three outs. So number 55's in. That's a nice pitch. He gets the low strike. And then he works the low breaking ball off the low strike. I like that combination right there for strike. Three out, number one. A ground out, one out away. And he gets the outside fastball. Then he swings over the off speed. So he's going to go back to the curvo, too. But he doesn't get it down. And this dude pops one over the right center field wall. And everyone goes crazy. Look at the catch by the guy in the bullpen. Little jump and bare handed grab on the game tying home run ball. Pretty exciting. This dude, number four, he goes jumping up and down.  This guy, he starts fighting the fence a little bit. And then you got the dad up top with his son just going absolutely crazy. He wants to hug him, doesn't hug him, starts going high knees, celebration. Meanwhile, these guys bend the knee in disappointment and disbelief, one out away from winning the game. Next batter, it's a single right up the middle. They're still just one out away. But now there's a runner on first. And then the next batter throws one into the gap to that same bullpen who just goes absolutely nuts because the right fielder bobbles the ball. The left fielder doesn't catch the ball. And then the bullpen's all running to leave the bullpen. The dude's got the door open before the play even ends because they're storming the field. Eight slides in, little punch the air. Gotta love it. Bullpen is just chugging, mad, dash, race. Those guys are having fun out there. 14 innings in a bullpen. We got a shirtless fan giving everyone hugs. Rip the shirt off, everyone's getting shirtless hugs. That's how we do it. And we got bye, bye, bye, Florida, bye, bye. This one was brought to you by DraftKings. Go to DraftKings, use promo code Johnboy when you do. Like I said, I have my own bets that I got to put in the sports book for opening day.   So who's gonna have a better Kuiper, Cole or DeGramme? You don't know what a Kuiper is because it's a stat I made up. You have to go to the sports book to find out.


Hey guys, what's up? It's Kinsey and welcome back to my channel This is probably going to be the last like vlog That's just a daily vlog for a bit because I start school back tomorrow and we'll be going back to Weekly vlogs unless you guys really like the daily I keep saying that I like in vlogs That's because these are all pre-uploaded and most of them haven't caught up yet. So today is I don't even know the date. Um January 7th. I am so it's Monday morning. I'm going to the studio Yana is here. She's in the other room, but we started like the Daniel fast and stuff today is Zoe So if you and you guys want to join all of our stuff on our app We're doing this like study thing through it So we did our study this morning and there's like digital versions of the study of that I'm pretty sure if you guys are new here be sure to subscribe, but today is just going to be a work day It's gonna be very productive, and I'm gonna like meal prep work out all that stuff I'm gonna quickly. I think I also have to like stop in for a few meetings after My recording, but here's my outfit. I'm just wearing my black. I am Gia pants. I honestly never wear these Big rapper T. I am Gia jacket. I just like being comfy in the studio These hoops are literally Amazon the M jewelers Reckoning golf and then my Adidas shoes, so I'm about to head out. I need to blow out my candles I have so many candles in my room at all time. Yeah, I'm super excited I haven't been to the studio in like almost a month now because of winter break and being gone and whatever So I'm so excited to be back and be with my podcast team. I love them They're my favorite team that I've ever worked with on YouTube like in digital Like things that I just have worked like a lot of different people dear media is my favorite I love them. They're just so fun, and I can like literally say whatever I want You know my producer Taylor is the best person ever. It's just so good. So anyways, I'm away very excited And when I leave the studio, I'm always in the best mood. So I'm really looking forward to that. Okay. I'm done now So currently Ghana is helping me with my D pop store because she's an angel It's our business venture together. Um, so She is currently that's from dolls kill like she's currently wait a second. Oh, no, this is something else She's currently selling a ton of stuff. We already have a lot listed on my D pop store But if you guys want anything like literally we have so many things so a thousand things that's from dolls kill Yay, also guys today is a very exciting day because today is my first day that I'm using my iPad pro at the office So I'm very excited Here is an overview of my outfit All right Let's go. Bye. Y'all know my D pop angel queen. Love you Bye bye. Bye Made it to the studio guys. Look who's here. Hannah is here We recorded this summer, but she's a champ and we're re-recording because I have since Changed you're an og you were in the office recording. Wow. Look at this view. Isn't it incredible?  Perfect day is a very big day Hannah. You want to know why why because today is the first day I'm able to use my brand new iPad pro instead of my laptop for my outline stuff Yep, just stuff. I do for the podcast. I can use the iPad pro. I literally got an iPad pro specifically to bring it to this office for meetings and my it's it's really wow That's oh my gosh. That's a connected to Wi-Fi face ID. Come on. Oh wait. I don't know Yeah, it has face ID on your way because it's just like the update the same thing whatever. Oh, wow I can't wait. Wow got new beverages in the studio guys. Look at these new Ice coffees. I've got a latte and pure black. You know what? I have to drink I'm doing a fast five to drink buck, but wow That's amazing. Yeah Perfect. Are you ready for hot seat? Hannah? I am so ready beyond ready beyond ready earlier I was like, you know hot seat and she's like, yeah, when you yell at me. Yeah, that's the one It is the first episode of the new year. So I think or no, okay Well, it's the first one that I'm recording for wait. No, it isn't okay. Let me talk this over Anyways, this week's episode is one of my best friends in the entire world It is one of my best friends Dom Dominique. So it's like D. O. M She says Dominique to new people because she's afraid they're gonna think that her name is Don like D. A. W. N. You know like the dish though, I think 1.30 I had a meeting Gda, but now I am heading back home. I need to edit some vlogs I'm waiting for my car, but I love my iPad Pro is so incredible working and using this guys You have no idea like it was just so amazing. I love my days. I really do. I'm back home I have a very very exciting package my rings from the Imjolers came in I accidentally have them sent to text I didn't accidentally they came later than when I got back So basically my like my family had to mail it and send it to me So I can finally unbox my new rings that I'm so excited for okay guys, so Here are the two rings. I'm gonna open them. I'm so excited You guys have no idea like any one of my real life I feel like even in the vlogs and talk about them so much, but every single day I tell someone knew about them and I haven't even received them so it's amazing Guys, I just recorded an entire unboxing and then for some reason had like memory card error So it deleted the clip which is so frustrating, but they came in these boxes very similar to if you guys saw me unboxing my Necklace that I got in a separate order from them I bought the rings before I bought these and I'm just absolutely in love with them So to give you a closer feel each of these pieces was $100, but I got them 40% off Which is crazy because they're just like a beautiful I'm doing like old YouTube a beautiful piece of jewelry and then I got this ring which I was like the most excited for There's so many rings that I want like this is like it fits perfectly caught like it's just like it's the perfect Wow, and then I got this one as well, which I think is so pretty. It's just like I Think this one is so pretty. This is they're both sevens. I guess that's like a little bit big Because this is still big for this one Big and even like it works though. Obviously I can even wear it like on my thumb if I get more like that's probably what I'm gonna Want to do can you believe like this is I love the whole like rings and whatever and this is Literally only $100 and I got it for 60 and like I just am obsessed so I'm obsessed Currently with the M. Jewelers. They're definitely my favorite. I'm super into like nicer jewelry Like I said, I wanted a necklace. That's very similar to this but smaller from Tiffany It was $14,000. So we're sticking with the M. Jewelers But yeah, I love this up to you on the size too. I said recently in another vlog I wish that this was smaller. No, I absolutely love this size. I'm I'm so pleased with the size I think if it was smaller, I would definitely I don't know. I just love the size. I think it's so perfect But here are the rings. I love that. Okay, I'll have it linked down below and like the rings and everything This is jewelry care But yeah guys, absolutely the best thing ever. I'm so happy. Whoo guys. I just got Morgan's Christmas card This is incredible. So she made Christmas cards for Why am I blanking for subscribers and she had extra so she sent us some which is so cute I'm already being lazy with my Daniel fast meals. I'm gonna make more I just like want to get this work done and I need to have a little bit of a lunch I'm gonna get broccoli and do all that. I have it in the fridge. I just don't feel like doing it right now I just made some sweet potatoes.  I listen to Brooke and Adina's and then Danielle and her mom. I love both of their moms like dearly and them But anyways, I was just thinking about it and I texted her and then she just texted me She's like yes down text me like two hours later. What if I just come this weekend? So it's just coming this weekend, but not for podcast just to come Because she's not here during like the week. So I have to record during the week, you know so that is that but I'm gonna get some editing done. I have my orientation vlog I have a video going up every single day this week because I'm crazy Have all those vlogs and I just want to get caught up today and like have everything to be a little bit more like real time It's one thing that I Kind of dislike with videos that I feel like where can I plug my laptop in so that I feel like they're not super up to date So that's what I'm gonna do answering some emails and like just doing some orientation There's some stuff because my class starts tomorrow not orientation enrollment That's what I'm gonna be doing for the next few hours It is currently 2 30 and then I think around like John is coming back at some point keep working on g-pop and then I think around like five Joe and I are gonna make V and chili But you guys will see it's his recipe. It's my favorite thing in the entire world. So Update has some jazz music going I changed or I moved out here because I needed an outlet for my laptop Also, a lot of you guys ask Why I'm like musicals into whatever so I have this playlist that I play when I'm doing school work Actually pretty much all times in my house, but especially when I'm working Not even doing school work just working in general This is my Spotify is just can be Piper But I have this playlist called 4 p.m My office because that's like my favorite time my office and the Sun's perfect and everything's perfect So I have this jazz playlist that I need to add to but I play it all the time you guys should go follow it If you guys are into that it's like so random I love like Frank Sinatra and stuff But it's a perfect playlist to play in your house because I grew up listening to Frank Sinatra in my house So I think that's why I like it like Billy Joel and whatever but Yeah, it's just like perfect for working and it doesn't distract me and it's just absolutely the best thing ever Okay guys, so I have been doing so much work.  I have everything pre upload for the week pre uploaded for the week I started on my 2019 income spreadsheet because I'm being so responsible this year. Also Here is my calendar as of right now if I turn it the other way and there's way more stuff But it's on this so hold on one sec. So I've just been adding in like recordings and guests and stuff Let me know who you guys want to see on They love you so much podcast I need to add that Keaton is coming that night, but yeah I'm just getting everything prep because tomorrow is my first day of classes. So I want to be very prepared I literally have videos going up every single day But that's not gonna be normal. I'm gonna be posting like two to three times a week still But like not every single day obviously because that's a little bit insane, but this is just pre uploading right now I'm gonna go fix this. I actually need to refilm a video for JCPenney, which I never have to refilm But I like messed it up. So I have to refilm it today Yonah's about to come back over. Yonah is about to come back over because she's gonna help me film that video actually She's already gonna come back over because she needs to like take photos for deep pop stuff But she's gonna help me film that video So I need to get that prepped and ready so we can just get it done and out of the way And then I am off work stuff for the day and we make your chili, which I don't know why I like stuttered And I said that but it's gonna be really good and I'm getting hungry so I Was drinking so much water today. I literally just brought the bread out and I like just pretty much finished it So that's ridiculous. Now just finished filming those videos I changed into my workout class or my workout clothes because I don't have to leave your class for like two more hours But we're making chili and I'm gonna meal pop for the week and make some dinner Yonah's back This is her. Jo is here Here we go being a chef Who knew I had it in me? This is my 2019 thing one of them is that I'm gonna be a chef and it's very exciting Update on the chili We're sauteing onions and tomatoes, right? Yes. See look at me I've actually made this before like a billion times, but I haven't made it in so long. It is for dot, but it's Joe's recipe How do we feel post chili? Oh my gosh, I forgot to log the chili After well, no We just finished the chili Like it made it Yeah, like it's all we're done. So it was great The garlic guys, okay, we ate I thought We ate just garlic like and it was painful like your stomach after that it was a horrible experience You feel it like right here to like it was so Listen Joe made me okay calm down Hey guys, I'm about to head to work out.  I just want to sleep honestly But I'm I know I'll be happy that I went my friend Taylor Kraus who is a photographer who has been on my vlogs before It's also going it's our first class together, which we're very sad about So I'm gonna go even though I want to sleep Okay, I just said to Taylor and I was like I am so tired and don't want to get on my car When you get here text me and I'll leave my car. Does anyone do that with their friends? I like don't want to leave yet. My class starts in 15 minutes. I love orange theory I'm just tired like this fast. It really wears you out the first few days are really difficult My gosh is just wow My gosh, okay, so and then once I work out I know I'll have more energy probably and I'll be really happy about it and then I'll go home I'll shower I Like I'm preparing to be so tired that I already thought about my outfit for tomorrow I'm gonna type it in my notes. So I forget it doesn't matter Jeans. All right. It's typed away everyone. That's great. Oh My gosh. Oh my gosh. No, I forgot to take off my makeup.   That's an incredible song just like reminiscing and like listening to the you know It's not new, but she like re-recorded everything which is awesome. Oh, let's see what Casey must grave story is But yeah, it's just incredible. You know, you live in LA when all of the Tesla spots are taken All right.  Oh great the last like 15 minutes or Yeah, like well actually like 30 at the last half of the class Why why why? The last half of the oh my god The last half of the class flew by so anyways, I am I'm on my way home. Oh gosh It is like it's like 915. I'm gonna go home Shower do all that. Oh my god. Okay, so I'm back home. I have a face mask on my skin It is like breaking out probably worse than it's broken out. I feel like I just saw that recently I don't know. I think my skin It's been maybe it's just been about month So maybe it's from stress or something where my skin is just breaking out and I have like little breakouts everywhere Super weird.  So anyways, I just picked out my offer for tomorrow I always do this guys. Look at the shirt that I'm wearing. This is so funny. It's all You need is juicy And it's never seen anything better than that. No, probably not because it just wouldn't make sense This jacket is from revolve. I always read the name of the bread lovers and friends But it's not available at least in this like material anymore. They have different colors But I really love this jacket. I got an undervolve. It's super cute And then I give myself two options for pants and I'm gonna wear my Air Force ones tomorrow for the first time in forever But now I'm back I'm waiting for this and then I'm gonna go take a shower and then I'm gonna read and I'm pretty much ready for school tomorrow for school. I feel like I'm in high school, but It's my first two classes for spring semester. I don't think our school is weird like oh my gosh It's gonna fall our school is weird our week starts on Wednesday and our due dates are Tuesday night So we might not have actual like classes open tomorrow, or maybe they'll open them a day early I don't really know whatever. We'll see gonna do some more reading too from This this is not what I'm doing my reading from this is literally my class Classes of the courses that I need it's we have these booklets at zoe and it has like soap or whatever I talked about this in a diva book But if you guys are interested in doing this and like following alarm alarm what along On our YouTube channel Zoey TV you can watch the like sermons every week, and then they have these digitally available on the app I believe so cute this is I have Megan and Philly's Christmas card in here. So I'm just gonna Shower I already did that this morning with Yana, but I might like read some more and do something I don't know I want to like be really exhausted and fall asleep since wake up early Guys my room is just really cute. I'm really I'm hoping that Hey me again still talking I'm hoping that our landlord works out the carpet because our carpets are just old and they drive me Insane and there's nothing you can do to like clean them like they're just old Like there's just really nothing you can do you could step on them and there would be something on like it's just difficult I'm being a little a little bit exaggerating there, but May I'm hoping that they rip them out or if I'm really lucky you a lot of old houses They just have hardwood underneath. I'm really really lucky They'll rip out the carpet, and there's hardwood underneath if not they can just replace it, but it's old needs to be fixed My blinds are getting fixed the guy came today. It's a good day guys. Okay. It's so crazy.  I don't remember the last time I slept and I didn't sleep in pajamas Do you guys wear pajamas? You know I should just do a pajama line genuinely like it's my favorite thing in the world So I'm gonna brush my hair Um this stuff right here. I've talked about it a billion times I'm sure you guys have seen it, but it's a tin plus keratin Lehman. I'm like almost out of it I swear probably I've used this for probably since middle school, and I'm 21 I'm a junior in college, and I have bought it. I'm not kidding I bought like 50 of these like it is the best thing ever it sucks just for drugstore It's like pretty pricey if you go to the restaurant, I know they have it like way cheaper But like I just whatever This stuff is amazing somebody's in my hair That's the only cool product I not cool, but the only like product they use in my hair is that's like shampoo and conditioner So I'm gonna brush that out guys. I just keep staring at my ring. It's like they're so pretty. Oh My gosh, would you look at that? Wow? All right? Well my room is looking very peaceful with all of my candles I've brushed out my hair that is eight for today's vlog. I hope you guys liked it We go back to weekly vlogs tomorrow for college a week in my life Hope you guys enjoyed today's video subscribe if you guys haven't already check my podcast do all that stuff I'll have it all linked down below and my g-pop. I'm selling so many clothes Anyways, love you guys so much, and I'll see you soon. Bye


Como Creek is an aquatic field site located in the north-central Rockies of Colorado, in the Niewat Ridge Biosphere Reserve and Experimental Ecology Reserve within the Roosevelt National Forest. This sub-alpine forest has remained relatively undisturbed for the past 50 years, free from fires, logging, and development. Snowmelt dominates the hydraulic and nutrient flux in Como Creek, with peak stream flow typically occurring in early summer. Creek organisms collected at Como include aquatic microbes, macroinvertebrates, algae, and plants. Automated instruments at the site also collect physical and chemical properties of the creek, surrounding atmosphere, and adjacent riparian area.