import java.util.*;
import java.io.*;
import java.lang.Math;
import java.util.Random;


public class Solution{

	static int n;
	static int m;
	static char[][] arr;

	static int[] dr = {0,0,1,-1};
	static int[] dc = {1,-1,0,0};



	public static void main(String[] args) throws Exception{

		FastScanner fs = new FastScanner();

		PrintWriter out = new PrintWriter(System.out);

		int t = fs.nextInt();

		while(t-->0){

			n = fs.nextInt();
			m = fs.nextInt();

			arr = new char[n][];

			for(int i=0;i<n;i++){
				arr[i] = fs.next().toCharArray();
			}

			ArrayList<int[]> goodList = new ArrayList<int[]>();

			for(int i=0;i<n;i++){
				for(int j=0;j<m;j++){
					if(arr[i][j]=='G')
						goodList.add(new int[]{i,j});
				}
			}

			if(goodList.size()==0){
				out.println("Yes");
			}
			else{
				boolean ans = true;
				for(int[] a: goodList){
					ans = ans && isWayPossible(a[0],a[1]);
					if(!ans)
						break;
				}

				if(ans==true){
					out.println("Yes");
				}
				else{
					out.println("No");
				}

			}
		}	
		out.close();
		
	}


	static boolean isWayPossible(int a, int b){

		boolean[][] visited = new boolean[n][m];
		if(!isPointGood(a,b))
			return false;
		return dfs(a,b,visited);
	}

	static boolean dfs(int a, int b, boolean[][] visited){
		visited[a][b] = true;

		if(a==n-1 && b==m-1)
			return true;

		for(int i=0;i<3;i++){
			int x = a+dr[i];
			int y = b+dc[i];
			if(x>=0 && x<n && y>=0 && y<m){
				if(!visited[x][y] && arr[x][y]!='#' && arr[x][y]!='B' && isPointGood(x,y)){
					boolean bool = dfs(x,y,visited);
					if(!bool)
						continue;
					else {
						return bool;
					}
				}
			}
		}
		return false;
	}



	static boolean isPointGood(int a,int b){
		for(int i=0;i<4;i++){
			int x = a+dr[i];
			int y = b+dc[i];
			if(x>=0 && x<n && y>=0 && y<n){
				if(arr[x][y]=='B')
					return false;
			}
		}
		return true;
	}


	
	
	

	

	static class FastScanner{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer("");

		public String next(){
			while(!st.hasMoreElements()){
				try{
					st = new StringTokenizer(br.readLine());
				} catch(IOException e){
					e.printStackTrace();
				}
			}
			return st.nextToken();
		}

		public int nextInt(){
			return Integer.parseInt(next());
		}

		public int[] readArray(int n){
			int[] a = new int[n];
			for(int i=0;i<n;i++)
				a[i] = nextInt();
			return a;
		}

		public long nextLong(){
			return Long.parseLong(next());
		}
	}
}